ID: 29330 Updated by: [EMAIL PROTECTED] Reported By: grayw at mail dot montclair dot edu -Status: Open +Status: Feedback Bug Type: Reproducible crash Operating System: Mac OS X 10.3.4 PHP Version: 5.0.0 New Comment:
Thank you for this bug report. To properly diagnose the problem, we need a backtrace to see what is happening behind the scenes. To find out how to generate a backtrace, please read http://bugs.php.net/bugs-generating-backtrace.php Once you have generated a backtrace, please submit it to this bug report and change the status back to "Open". Thank you for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2004-07-22 16:18:12] grayw at mail dot montclair dot edu Description: ------------ A daemon (using PHPCLI) that spawns children using pcntl_fork crashes reproducibly. Crashlog suggests pcntl_tick_handler is the culprit, however it could be my doing. Crashlog output below. Crash sometimes occurs right away, but never later than 3 minutes after starting daemon. Other info: configure: ./configure \ --prefix=/usr/local/php5 \ --disable-cgi \ --with-openssl=/usr/local/ssl \ --enable-calendar \ --with-libxml-dir=/usr/local \ --with-gd \ --with-jpeg-dir=/usr/local \ --with-png-dir=/usr/local \ --with-zlib-dir=/usr \ --enable-ftp \ --with-ldap \ --with-mcrypt \ --with-mhash \ --with-mysql=/usr/local/mysql \ --with-ncurses \ --with-pgsql=/usr/local/postgres \ --enable-soap \ --enable-sockets \ --with-pear \ --enable-pcntl Changes to php.ini from ini-dist: ;include_path = ".:/php/includes" include_path = ".:/usr/local/php5/include/php:/usr/local/php5/lib/php:./includes" Reproduce code: --------------- Providing link to the full source, as the source is somewhat complex: http://quicksilver.montclair.edu/src/ServiceMonitor/ The crash is happening during the loop() method of ServiceCheckRunner: public function loop() { declare(ticks=1); pcntl_signal(SIGCHLD, array($this, "sig_child")); pcntl_signal(SIGUSR1, array($this, "sig_usr1")); pcntl_signal(SIGINT, array($this, "sig_int")); pcntl_signal(SIGHUP, array($this, "sig_hup")); pcntl_signal(SIGTERM, array($this, "sig_term")); //while (1) {} //begin, The Big Loop. while(1) { $now = time(); if (count($this->children) < $this->num_children) { $service = $this->next(); if ($now < $service->next_attempt()) { sleep(1); continue; } $service->set_next_attempt(); if ($pid = pcntl_fork()) { $this->children[$pid] = $service; } else { pcntl_alarm($service->timeout()); exit($service->run()); } } } // end, The Big Loop. } // end function loop Expected result: ---------------- The processes should continue running until a signal is received and handled, or they receive a SIGKILL. Actual result: -------------- Daemon crashes every time it is run, with a malloc message and a core dump (which the kernel catches, and formats using CrashReporter). Console output: *** malloc[19317]: error for object 0xcbc4d0: Incorrect checksum for freed object - object was probably modified after being freed; break at szone_error Output from Apple's CrashReporter: ********** Host Name: quicksilver.montclair.edu Date/Time: 2004-07-22 09:44:07 -0400 OS Version: 10.3.4 (Build 7H63) Report Version: 2 Command: php Path: /usr/local/php5/bin/php Version: ??? (???) PID: 19660 Thread: 0 Exception: EXC_BAD_ACCESS (0x0001) Codes: KERN_INVALID_ADDRESS (0x0001) at 0x784816ff Thread 0 Crashed: 0 php 0x001bb470 pcntl_tick_handler + 0x9c (pcntl.c:668) 1 php 0x001804b8 zend_llist_apply_with_argument + 0x38 (zend_llist.c:233) 2 php 0x0015bb78 php_run_ticks + 0x38 (php_ticks.c:71) 3 php 0x001ae654 zend_ticks_handler + 0x64 (zend_execute.c:4187) 4 php 0x001a7364 execute + 0x14c (zend_execute.c:1391) 5 php 0x001aa90c zend_do_fcall_common_helper + 0x350 (zend_execute.c:2729) 6 php 0x001a7364 execute + 0x14c (zend_execute.c:1391) 7 php 0x0018952c zend_execute_scripts + 0xfc (zend.c:1062) 8 php 0x00152148 php_execute_script + 0x270 (main.c:1629) 9 php 0x001bca70 main + 0xb98 (php_cli.c:944) 10 php 0x00002380 _start + 0x188 (crt.c:267) 11 php 0x000021f4 start + 0x30 PPC Thread State: srr0: 0x001bb470 srr1: 0x0000f030 vrsave: 0x00000000 cr: 0x88022224 xer: 0x00000002 lr: 0x001bb478 ctr: 0x0017d7b0 r0: 0x001bb4b4 r1: 0xbfffea50 r2: 0x00000000 r3: 0x00279720 r4: 0x104816f7 r5: 0xbfffea90 r6: 0x00cb08e0 r7: 0x00000004 r8: 0x02045210 r9: 0x00ca2d60 r10: 0x00276250 r11: 0x00276254 r12: 0x0017d7b0 r13: 0x00275000 r14: 0x00000000 r15: 0x00278e90 r16: 0x00000008 r17: 0x00259440 r18: 0x002761b8 r19: 0x00000000 r20: 0x00000000 r21: 0x00ca33d0 r22: 0x00000001 r23: 0x002749f0 r24: 0x0025a5d4 r25: 0x00000000 r26: 0x00cbce30 r27: 0x0025b3dc r28: 0x00274920 r29: 0x00000001 r30: 0x784816f7 r31: 0x001bb3dc Binary Images Description: 0x1000 - 0x228fff php php 0x890000 - 0x8aafff libmysqlclient.12.dylib /usr/local/mysql/lib/mysql/libmysqlclient.12.dylib 0x8b9000 - 0x8d3fff libjpeg.62.dylib /usr/local/lib/libjpeg.62.dylib 0xa6d000 - 0xa93fff libmhash.2.dylib /usr/local/lib/libmhash.2.dylib 0xad5000 - 0xaf5fff libmcrypt.4.dylib /usr/local/lib/libmcrypt.4.dylib 0x1808000 - 0x18d0fff libxml2.2.dylib /usr/local/lib/libxml2.2.dylib 0x76080000 - 0x76085fff libltdl.3.dylib /usr/lib/libltdl.3.dylib 0x81b90000 - 0x81b92fff libpanel.5.dylib /usr/lib/libpanel.5.dylib 0x8fe00000 - 0x8fe4ffff dyld /usr/lib/dyld 0x90000000 - 0x90122fff libSystem.B.dylib /usr/lib/libSystem.B.dylib 0x939d0000 - 0x939d4fff libmathCommon.A.dylib /usr/lib/system/libmathCommon.A.dylib 0x94000000 - 0x9403cfff com.apple.LDAPFramework 1.3 (37) /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP 0x94120000 - 0x9414bfff libncurses.5.dylib /usr/lib/libncurses.5.dylib 0x94500000 - 0x9450ffff libsasl2.2.0.1.dylib /usr/lib/libsasl2.2.0.1.dylib 0x945b0000 - 0x945b9fff libz.1.dylib /usr/lib/libz.1.dylib 0x94610000 - 0x9462afff libresolv.9.dylib /usr/lib/libresolv.9.dylib 0x96a20000 - 0x96ae2fff libcrypto.0.9.7.dylib /usr/lib/libcrypto.0.9.7.dylib 0x96b40000 - 0x96b6efff libssl.0.9.7.dylib /usr/lib/libssl.0.9.7.dylib 0x96cb0000 - 0x96d9efff libiconv.2.dylib /usr/lib/libiconv.2.dylib ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=29330&edit=1