ID: 16583 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open -Bug Type: Reproducible crash +Bug Type: Apache2 related Operating System: PLD Linux -PHP Version: 4.1.2 +PHP Version: 4.2.0RC3 New Comment:
After running httpd via ElectricFence I got different backtrace... problaby there is some memory corruption(?). #0 0x007f0e68 in ts_resource_ex (id=1, th_id=0x0) at TSRM.c:307 307 TSRM_ERROR((TSRM_ERROR_LEVEL_INFO, "Fetching resource id %d for current thread %d", id, (long) thread_resources->thread_id)); (gdb) (gdb) bt #0 0x007f0e68 in ts_resource_ex (id=1, th_id=0x0) at TSRM.c:307 #1 0x0075831e in php_module_startup (sf=0x55b020) at main.c:856 #2 0x00559ca3 in php_apache_server_startup (pconf=0x4d5010, plog=0x514010, ptemp=0xa91010, s=0x4d6d60) at sapi_apache2.c:435 #3 0x080681e5 in ap_run_post_config (pconf=0x4d5010, plog=0x514010, ptemp=0xa91010, s=0x4d6d60) at config.c:130 #4 0x0806e7a5 in main (argc=2, argv=0xbffff9c4) at main.c:611 #5 0x003c0418 in __libc_start_main () from /lib/libc.so.6 (gdb) frame 0 #0 0x007f0e68 in ts_resource_ex (id=1, th_id=0x0) at TSRM.c:307 307 TSRM_ERROR((TSRM_ERROR_LEVEL_INFO, "Fetching resource id %d for current thread %d", id, (long) thread_resources->thread_id)); (gdb) print thread_resources $1 = (struct _tsrm_tls_entry *) 0xaa0000 (gdb) print *thread_resources Cannot access memory at address 0xaa0000 (gdb) print tls_key $2 = 1 For now I did: thread_resources = pthread_getspecific(tls_key); + thread_resources = NULL; #elif defined(TSRM_ST) and wget -S myserver tells me: Server: Apache/2.0.35 (Unix) PHP/4.2.0RC3 And it works http://misie.k.pl/phptest.php Now I'm waiting for official fix instead of mine ugly workaround. Previous Comments: ------------------------------------------------------------------------ [2002-04-13 05:15:00] [EMAIL PROTECTED] I also added patch from php cvs (after rc3): --- php4/sapi/apache2filter/sapi_apache2.c 11 Apr 2002 20:34:31 -0000 1.61.2.8 +++ php4/sapi/apache2filter/sapi_apache2.c 12 Apr 2002 22:26:28 -0000 1.61.2.9 (modifies safe_free() define) And now: #0 0x0039605d in pthread_mutex_lock () from /lib/libpthread.so.0 (gdb) where #0 0x0039605d in pthread_mutex_lock () from /lib/libpthread.so.0 #1 0x0062f646 in tsrm_mutex_lock (mutexp=0x0) at TSRM.c:492 #2 0x0062f2f8 in ts_resource_ex (id=0, th_id=0x0) at TSRM.c:318 #3 0x00568400 in _zend_bailout (filename=0x644f84 "zend_hash.c", lineno=98) at zend.c:522 #4 0x0056e0ba in _zend_is_inconsistent (ht=0x80dea70, file=0x644f84 "zend_hash.c", line=532) at zend_hash.c:98 #5 0x0056f919 in zend_hash_destroy (ht=0x80dea70) at zend_hash.c:532 #6 0x004fcfef in destroy_php_config () from /usr/lib/apache/libphp4.so #7 0x00168529 in apr_pool_cleanup_run () from /usr/lib/libapr.so.0 #8 0x00167d39 in apr_pool_clear () from /usr/lib/libapr.so.0 #9 0x0806e5af in main (argc=2, argv=0xbffffa34) at main.c:579 #10 0x003bc418 in __libc_start_main () from /lib/libc.so.6 (gdb) frame 2 #2 0x0062f2f8 in ts_resource_ex (id=0, th_id=0x0) at TSRM.c:318 318 tsrm_mutex_lock(tsmm_mutex); (gdb) (gdb) print tsmm_mutex $1 = (struct {...} *) 0x0 (gdb) l 313 } else { 314 thread_id = *th_id; 315 } 316 317 TSRM_ERROR((TSRM_ERROR_LEVEL_INFO, "Fetching resource id %d for thread %ld", id, (long) thread_id)); 318 tsrm_mutex_lock(tsmm_mutex); 319 320 hash_value = THREAD_HASH_OF(thread_id, tsrm_tls_table_size); 321 thread_resources = tsrm_tls_table[hash_value]; 322 ------------------------------------------------------------------------ [2002-04-13 04:58:57] [EMAIL PROTECTED] I wanted to test apache 2.0.35 with php 4.2.0RC3 on my Linux (2.4 kernel, 2.5.5 glibc, gcc 3.1 20020408 prerelease) unfortunately it always crashes at start (backtrace below). Anyway if fix is know then please let me know - I want to test it. I also can provide more information if needed. httpd -X gdb /usr/sbin/httpd core ... #0 0x008332ce in ts_resource_ex (id=1, th_id=0x0) at TSRM.c:310 310 TSRM_SAFE_RETURN_RSRC(thread_resources->storage, id, thread_resources->count); (gdb) where #0 0x008332ce in ts_resource_ex (id=1, th_id=0x0) at TSRM.c:310 #1 0x0077e56c in php_module_startup (sf=0x602020) at main.c:856 #2 0x00600cb5 in php_apache_server_startup (pconf=0x4d4010, plog=0x513010, ptemp=0xad7010, s=0x4d5d60) at sapi_apache2.c:433 #3 0x080681e5 in ap_run_post_config (pconf=0x4d4010, plog=0x513010, ptemp=0xad7010, s=0x4d5d60) at config.c:130 #4 0x0806e7a5 in main (argc=2, argv=0xbffff9f4) at main.c:611 #5 0x003c0418 in __libc_start_main () from /lib/libc.so.6 $1 = (struct _tsrm_tls_entry *) 0xadcff0 (gdb) print *thread_resources $2 = {storage = 0x1, count = 1885497708, thread_id = 1932420708, next = 0x312e6f} (gdb) print *thread_resources->storage Cannot access memory at address 0x1 (gdb) print thread_resources->storage $3 = (void **) 0x1 (gdb) print thread_resources->count $4 = 1885497708 (gdb) info threads * 1 process 5627 0x008332ce in ts_resource_ex (id=1, th_id=0x0) at TSRM.c:310 (gdb) l 305 TSRM_ERROR((TSRM_ERROR_LEVEL_INFO, "Fetching resource id %d for current thread %d", id, (long) thread_resources->thread_id)); 306 /* Read a specific resource from the thread's resources. 307 * This is called outside of a mutex, so have to be aware about external 308 * changes to the structure as we read it. 309 */ 310 TSRM_SAFE_RETURN_RSRC(thread_resources->storage, id, thread_resources->count); 311 } 312 thread_id = tsrm_thread_id(); 313 } else { 314 thread_id = *th_id; ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=16583&edit=1