#31558 [Opn->Fbk]: FATAL: erealloc(): Unable to allocate ### bytes

From: Date: Fri, 14 Jan 2005 23:16:02 +0000
Subject: #31558 [Opn->Fbk]: FATAL: erealloc(): Unable to allocate ### bytes
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-72167@lists.php.net to get a copy of this message
ID: 31558 Updated by: sniper@php.net Reported By: jdw at nearlyfreespeech dot net -Status: Open +Status: Feedback Bug Type: Reproducible crash Operating System: FreeBSD PHP Version: 4.3.10 New Comment: Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip First get the stable snapshot. Configure with --enable-debug (that will actually make PHP more stable in some cases..) Then see if you get any weird leaks or something in your logs. And/or crashes -> generate a GDB backtrace and paste it here. Previous Comments: ------------------------------------------------------------------------ [2005-01-14 23:47:03] jdw at nearlyfreespeech dot net Our PHP config is at: http://example.nfshost.com/phpinfo.php If you need anything beyond that, let me know what, and I'll add it here. I'll put the php.ini at the bottom, along with example per-site overrides. It's pretty stock. They only Zend module I've heard of is the optimizer, and I know we don't use that. The config line is at the top of the phpinfo page. strace does not appear on these FreeBSD boxes and 'httpd -?' does not show -X as an option, so I may need some guidance as to what you're hoping to accomplish with that to find the equivalent. If strace is like ktrace, then I have to assume that the output generated by the parent and all child processes would be problematically large. From the source code, it looks like we can define a flag that will SEGV the httpd when this occurs. Is it possible that this would generate a useful backtrace? Would defining this flag (ZEND_DEBUG, I think) have other dreadful consequences not consistent with running in production? Thanks for looking at this! php.ini: auto_prepend_file = nfsn_umask_hack.php upload_tmp_dir = /tmp max_execution_time = 180 browscap = /nfsn/apps/php/lib/browscap.ini post_max_size = 10M safe_mode_exec_dir = "" safe_mode_include_dir = "/nfsn/apps/php/lib/php/"; safe_mode_allowed_env_vars = TZ safe_mode_gid = true upload_max_filesize = 10M sendmail_path = /nfsn/bin/sendmail -t -i Example from httpd.conf: php_admin_value open_basedir (3 dirs) php_admin_value safe_mode 1 php_admin_value upload_tmp_dir /nfsn/content/example/tmp php_admin_value max_execution_time 180 The file referenced in auto_prepend_file has one line: <?php umask(0); ?> ------------------------------------------------------------------------ [2005-01-14 21:39:53] tony2001@php.net What's your PHP configuration? Any Zend modules enabled? Any chance to replicate the problem with strace httpd -X? The info you've provided is pretty useless ATM as we don't have your configuration and we're unable to reproduce the problem. ------------------------------------------------------------------------ [2005-01-14 19:44:06] jdw at nearlyfreespeech dot net Description: ------------ We have seen this error under the following conditions - FreeBSD 4-STABLE - Using Apache 1.3.33 - PHP 4.3.10 - multiple servers - servers have hundreds of megs of available RAM and gigs of free swap - httpd processes are well within resource limits - happens with random PHP scripts, even simple pages that don't use much memory - pages that generate the error may work if immediately reloaded (unchanged with respect to code and data), suggesting that this is not a per-request memory limit being exceeded - almost always happens *before* headers are sent - occurs on pages not using gzip or zlib or output compression or anything else that would defer content output - happens with alloc amounts from 7500 bytes to about 1meg, averaging between 100-300k. - happens in repetitive "clusters" Problem persists across "apachectl graceful" but "goes away" (for awhile at least) after "apachectl restart" so the Apache parent process may tie in somehow. Is there a way I can obtain more helpful debug information about this in a production environment? Thanks for any help with this! Reproduce code: --------------- n/a... virtually any PHP page appears susceptible, which is consistent with the observation that it occurs before headers are sent. Expected result: ---------------- PHP script should run. Actual result: -------------- Example from Apache error log: (all messages appear in immediate succession) FATAL: erealloc(): Unable to allocate 7500 bytes FATAL: erealloc(): Unable to allocate 7500 bytes FATAL: erealloc(): Unable to allocate 7500 bytes FATAL: erealloc(): Unable to allocate 7500 bytes FATAL: erealloc(): Unable to allocate 7500 bytes FATAL: erealloc(): Unable to allocate 7500 bytes ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=31558&edit=1

« previous php.bugs (#72167) next »