Edit report at http://bugs.php.net/bug.php?id=40479&edit=1
ID: 40479 Comment by: contact at peterfrankjohnson dot co dot uk 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: Problem: ---------- I had this problem when importing an xml file with over 4200 items which all needed inserting as individual records into a database. I was using doctrine to insert the records and was creating a new object for each record, but each time I ran the script it crashed with this error after inserting exactly 3,579 records each time. Solution: ----------- I then decided to try cleaning up the code I had written by using unset() to destroy the object after it had been finished with. All of the records were then inserted without any problems. I would advise anyone receiving this error to check that variables and objects are being destroyed with unset, because if you think about it the error is telling you that the zend memory managers heap is corrupted. Previous Comments: ------------------------------------------------------------------------ [2010-04-30 10:41:31] php at foxteck dot org 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 ------------------------------------------------------------------------ [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. ------------------------------------------------------------------------ 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