Edit report at http://bugs.php.net/bug.php?id=40479&edit=1
ID: 40479 Comment by: php at foxteck dot org Reported by: rrossi at maggioli dot it Summary: zend_mm_heap corrupted Status: No Feedback Type: Bug Package: Reproducible crash Operating System: Suse Linux 9.0 PHP Version: 5.2.1 New Comment: Just for history/logging purposes, I got this same error on PHP 5.2.6 + MySQL 5.1 + Apache/2.2.4 (Unix) mod_ssl/2.2.4 OpenSSL/0.9.7a DAV/2 + SuPHP on RHEL 4 today. It was related to mysql_* calls, phpinfo() worked fine, no errors. Any mysql_* call crashed. Code: --------------- [erom...@roll tmp]$ cat /tmp/test.php <?php echo "Hola"; $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($link); Reproducing --------------- [erom...@roll tmp]$ /usr/local/php5-cgi/bin/php-cgi /tmp/test.php zend_mm_heap corrupted Worked fine with USE_ZEND_ALLOC=0 --------------- [erom...@roll tmp]$ export USE_ZEND_ALLOC=0 [erom...@roll tmp]$ /usr/local/php5-cgi/bin/php-cgi /tmp/test.php PHP Warning: mysql_connect() [<a href='function.mysql-connect'>function.mysql- connect</a>]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /tmp/test.php on line 2 X-Powered-By: PHP/5.2.6 Content-type: text/html HolaCould not connect: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) Updating to 5.3.2 fixed the issue. Here's the config line I used in BOTH 5.2.6 and 5.3.2, everything compiled fine both times. Disregard the unused flags: './configure' \ '--prefix=/usr/local/php5-cgi' \ '--with-curl' \ '--with-freetype-dir=/usr' \ '--with-png-dir=/usr' \ '--enable-gd-native-ttf' \ '--with-jpeg-dir=/usr' \ '--with-png' \ '--enable-magic-quotes' \ '--enable-sockets' \ '--enable-sysvsem' \ '--enable-sysvshm' \ '--enable-sysvmsg' \ '--enable-track-vars' \ '--enable-trans-sid' \ '--enable-yp' \ '--enable-wddx' \ '--with-pear=/usr/share/pear' \ '--with-kerberos' \ '--with-mysql=/usr/local/mysql' \ '--with-mysqli' \ '--with-pcre-regex' \ '--disable-cli' \ '--enable-cgi' \ '--enable-mbstring' \ '--enable-fastcgi' \ '--enable-force-cgi-redirect' \ '--enable-discard-path' \ '--with-oci8=instantclient,/usr/lib/oracle/11.1.0.1/client/lib' \ '--with-gd' \ '--with-zlib' Cheers, Eduardo Romero http://foxteck.org Previous Comments: ------------------------------------------------------------------------ [2009-11-16 19:16:03] gfmailweb at gmail dot com Adding export USE_ZEND_ALLOC=0 to apache2ctl on Ubuntu Hardy worked for me too. ------------------------------------------------------------------------ [2009-11-12 13:38:31] astehlik at intera dot de I can confirm, that my apache crashed with the error "zend_mm_heap corrupted" under heavy load. After that I get a lot of Segmentation faults (11). OS: CentOS 5.4 PHP: 5.2.11 Apache: 2.2.14 The server is running as a virtual machine in an ESXi 3.5 Server. I'm now testing the "export USE_ZEND_ALLOC=0" workaround in my apachectl. I'll provide more feedback as soon as I know if this helps. ------------------------------------------------------------------------ [2009-10-27 14:54:49] mike at blueroot dot co dot uk I see this error all the time on my complicated application. I am using php-fcgi + nginx + mongodb so I am fairly sure it is something in core. I find that even a small change can fix the problem, output buffering seems to be the culprit for me (ob_end_flush() seems to fix it) which is maybe why people can only reproduce on production servers? ------------------------------------------------------------------------ [2009-10-14 20:43:45] tulio dot silva at mpt dot gov dot br Hi all, in answer to sriram above, here we go: -bash-3.00$ /usr/local/apache2/bin/httpd -V Server version: Apache/2.2.13 (Unix) Server built: Oct 5 2009 10:20:45 Server's Module Magic Number: 20051115:23 Server loaded: APR 1.3.8, APR-Util 1.3.9 Compiled using: APR 1.3.8, APR-Util 1.3.9 Architecture: 64-bit Server MPM: Prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APACHE_MPM_DIR="server/mpm/prefork" -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=128 -D HTTPD_ROOT="/usr/local/apache2" -D SUEXEC_BIN="/usr/local/apache2/bin/suexec" -D DEFAULT_PIDLOG="logs/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_LOCKFILE="logs/accept.lock" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf" So it is prefork. If ZTS is enabled with --enable-maintainer-zts, then it´s off. Also, from phpinfo(), Debug Build no Thread Safety disabled Zend Memory Manager enabled and it seems USE_ZEND_ALLOC=0 does nothing for me. I´m on CentOS 4.6 on multi-core AMD64, with nearly 1GB RAM and a very busy server. There are plenty of custom systems in this machine, so I can´t tell what is causing it, but it started after we began using Elxis 2009.0 in production state (about 15 hits/second). My configure lines includes a lot of other parameters, like oci and MySQLi, but if of any use, I´ll compare the relevant items with rrossi´s (bug opener) config.nice: './configure' \ '--with-apxs' \ # idem '--with-mysql=/usr/local/mysql' \ #'--with-mysql=/usr' (CentOS rpm) '--with-bz2' \ # no '--with-mcrypt' \ #no '--with-pgsql' \ #no '--without-pear' \ # --with-pear Apache also includes a lot of modules. The most relevant, I guess, are rewrite, proxy (http & ajp), ssl, and cache. If any other info needed, feel free (and please) contact me. It´s been a serious problem down here. ------------------------------------------------------------------------ [2009-09-18 08:24:48] tdikarim at hotmail dot com Hi , I have tested with the version 5.3 of PHP with no success. I have this error: Fatal error: Out of memory (allocated 564920320) (tried to allocate 39063398 bytes) in I:\srvDevPHP\PHP_PEAR\File\PDF.php on line 3191 zend_mm_heap corrupted The line 3191 is << $this->_buffer .= $s . "\n"; >> of the _out function. How can i use the USE_ZEND_ALLOC parameter. I don't find any file for do that. Somme info: EasyPhp 2.0.0.0 php 5.3.0 Apache 2.2.13 Thanks Karim ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=40479 -- Edit this bug report at http://bugs.php.net/bug.php?id=40479&edit=1