Hi, this is really a stupid bug, the guy who designed gd_compat.[hc] expected's that sizeof(int) == sizeof(const char*). So he declared the gdJpegGetVersionString() as returns int instead of correctly returning const char*. So all 64-bit systems must crash at this point, cause int's are 4bytes and pointer's are 8 bytes on those systems.
-- mit freundlichem Gruss -- regards Thomas Drillich
--- php5-5.3.0/ext/gd/libgd/gd_compat.hgdJpegGetVersionString_returnsInt 2009-08-07 19:09:40.000000000 +0200 +++ php5-5.3.0/ext/gd/libgd/gd_compat.h 2009-08-07 19:09:54.000000000 +0200 @@ -8,7 +8,7 @@ #endif const char * gdPngGetVersionString(); -int gdJpegGetVersionString(); +const char * gdJpegGetVersionString(); int gdJpegGetVersionInt(); int overflow2(int a, int b); --- php5-5.3.0/ext/gd/libgd/gd_compat.c.gdJpegGetVersionString_returnsInt 2009-08-07 19:09:07.000000000 +0200 +++ php5-5.3.0/ext/gd/libgd/gd_compat.c 2009-08-07 19:10:11.000000000 +0200 @@ -14,7 +14,7 @@ return JPEG_LIB_VERSION; } -int gdJpegGetVersionString() +const char * gdJpegGetVersionString() { switch(JPEG_LIB_VERSION) { case 62: