From: wharmby at uk dot ibm dot com Operating system: Linux RHEL4 PHP version: 5CVS-2006-11-24 (snap) PHP Bug Type: Reproducible crash Bug description: Segmentation fault in imap initialization due to missing module dependency
Description: ------------ Using latest 5.2 snapshot (Nov24, 2006 0730 GMT) and building on Linux RHEL4 with the following basic configuration: ./configure --disable-all --with-imap=/opt/imap-2004g --with-imap-ssl --enable-shared --enable-session=shared --enable-debug --enable-maintainer-zts --enable-cli --disable-cgi with "extension=session.so" added to php.ini the resulting CLI fails on startup, i.e. something as simple as "php -m" seg faults. Looking at the core produced on the seg fault with GDB gives the following back trace: http://pastebin.ca/256507 The reason for the fault is that imap initialization assumes that standard/file initialization has already completed and acquired and initialized "file globals". Unfortunately imap does not have a defined module dependency on standard so the module initialization order is not guaranteed to be correct. The reason for the crash in this case is that PHP 5.2 has defined a new dependency between standard and session so the order of session and standard in the startup order will be flipped by zend_sort_modules() when it sorts the module_registry. With session defined as shared and imap statically linked the resulting module initialization order will be session .......imap.....standard and we fail due to the unspecified dependency between imap and standard I get same seg fault if imap is also compiled as a shared module; the key to reproducing the problem is configuring PHP with imap support with session defined as shared and ZTS enabled. If both session and imap are defined as shared the problem can be resolved by ordering the php.ini entries as follows: extension = session.so extension = imap.so as this results in a initialization order of session..... standard ...imap and all is OK. But with imap linked statically there is no workaround to the issue The problem is easily resolved by defining the missing dependency between imap and standard. The following patch adds the necessary dependency: http://pastebin.ca/256510 Reproduce code: --------------- Build with above config on Linux and "php -m" fails with a seg fault. Expected result: ---------------- [EMAIL PROTECTED] php5.2-200611240730]# php -m [PHP Modules] date imap Reflection session standard [Zend Modules] Actual result: -------------- [EMAIL PROTECTED] php5.2-200611240730]# php -m Segmentation fault (core dumped) -- Edit bug report at http://bugs.php.net/?id=39613&edit=1 -- Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=39613&r=trysnapshot44 Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=39613&r=trysnapshot52 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=39613&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=39613&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=39613&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=39613&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=39613&r=needscript Try newer version: http://bugs.php.net/fix.php?id=39613&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=39613&r=support Expected behavior: http://bugs.php.net/fix.php?id=39613&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=39613&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=39613&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=39613&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=39613&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=39613&r=dst IIS Stability: http://bugs.php.net/fix.php?id=39613&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=39613&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=39613&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=39613&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=39613&r=mysqlcfg