Bug #13437 Updated: PHP cores on exit; memory deallocation problem?
| From: | yohgaki@php.net | Date: | Mon, 04 Feb 2002 07:20:39 +0000 |
| Subject: | Bug #13437 Updated: PHP cores on exit; memory deallocation problem? | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-79051@lists.php.net to get a copy of this message | ||
ID: 13437
Updated by: yohgaki@php.net
Reported By: dshadow@zort.net
-Status: Open
+Status: Bogus
Bug Type: Reproducible crash
Operating System: Linux & Solaris
PHP Version: 4.1RC5
New Comment:
The version of PHP that this bug was reported in is too old. Please
try to reproduce this bug in the latest version of PHP (available
from http://www.php.net/downloads.php
If you are still able to reproduce the bug with one of the latest
versions of PHP, please change the PHP version on this bug report
to the version you tested and change the status back to "Open".
Previous Comments:
------------------------------------------------------------------------
[2001-12-11 09:51:44] dshadow@zort.net
I tried using apache_child_terminate() as suggested, however, this
doesn't help any. (It might be beneficial if this function and its
required configuration option were documented somewhere.)
------------------------------------------------------------------------
[2001-12-10 22:32:39] zak@php.net
Could you try calling apache_child_terminate() at the end
of your script?
------------------------------------------------------------------------
[2001-12-04 10:54:55] dshadow@zort.net
This helps with my problem of apache children being left in unusable
states with large memory allocations. However, it is still entirely
unreasonable that memory that takes only a few seconds to allocate
should need several minutes to be disposed of. I just watched PHP take
*six* minutes to dispose of 70 megs of memory it allocated, and on
prior occasions when no one was watching, I've found it to have be
running for *hours* cleaning up after itself.
------------------------------------------------------------------------
[2001-12-03 17:46:34] venaas@php.net
I've seen this as well. The time limit you set is removed
when the script finishes but before the memory is cleaned
up. What I did to avoid the problem was to change the code
in php_request_shutdown() main/main.c. The end of the function looks
like:
zend_try {
shutdown_memory_manager(CG(unclean_shutdown), 0);
} zend_end_try();
zend_try {
zend_unset_timeout(TSRMLS_C);
} zend_end_try();
I switched the timeout and the shutdown, and then it worked
for me. It still takes a long time, but you don't get a
timeout. Not sure if this is the correct fix, but maybe
you want to test and confirm that it helps?
------------------------------------------------------------------------
[2001-12-03 15:58:46] dshadow@zort.net
This problem is still happening on 4.1RC5, though it seems to be doing
a little better than before. However it's also ignoring the time value
I'm passing in to set_time_limit(), but only when it runs out of time
during clean-up.
#0 0x8107f05 in _efree (ptr=0xa62065c) at zend_alloc.c:240
240 REMOVE_POINTER_FROM_LIST(p);
(gdb) bt
#0 0x8107f05 in _efree (ptr=0xa62065c) at zend_alloc.c:240
#1 0x810829b in shutdown_memory_manager (silent=1, clean_cache=1) at
zend_alloc.c:469
#2 0x807169e in php_module_shutdown () at main.c:1007
#3 0x8070239 in main (argc=3, argv=0xbffffc44) at cgi_main.c:788
------------------------------------------------------------------------
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/13437
--
Edit this bug report at http://bugs.php.net/?id=13437&edit=1