Bug #13806 Updated: zlib compression is broken?
| From: | yasuo_ohgaki at yahoo dot com | Date: | Sun, 28 Oct 2001 15:28:34 +0000 |
| Subject: | Bug #13806 Updated: zlib compression is broken? | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-69177@lists.php.net to get a copy of this message | ||
ID: 13806
User updated by: yasuo_ohgaki@yahoo.com
Reported By: yasuo_ohgaki@yahoo.com
Status: Open
Bug Type: Reproducible crash
Operating System: Linux 2.4.14-pre3/glibc 2.2.2
PHP Version: 4.1.0 RC CVS-2001-10-24
New Comment:
Problem is appearent if output is larger than output buffer size.
httpd exits with code 01 with following script
(No output)
<?php
for ($i=0; $i < 1024; $i++) echo 'abcd';
?>
but it not with
(Output is correct)
<?php
for ($i=0; $i < 1023; $i++) echo 'abcd';
?>
It exits with code 01 with more complex script w/o output, though.
Previous Comments:
------------------------------------------------------------------------
[2001-10-28 08:50:56] yasuo_ohgaki@yahoo.com
Upgraded from apache 1.3.20 to 1.3.22.
httpd exited with status code 01 while running under gdb.
(gdb) run -X
Starting program: /usr/sbin/httpd -X
Program exited with code 01.
(gdb)
------------------------------------------------------------------------
[2001-10-28 07:29:53] yasuo_ohgaki@yahoo.com
via-rihine chipset NIC dvriver seems to be fixed in 2.4.13, finanlly :) I could upgrade kernel from
2.4.4 to 2.4.14-pre3.
It seems many *.c files are not modified for new asm/*.h files, yet. (It was the same, when I tried
2.4.13) Therefore, I couldn't use the same config as 2.4.4. I was using 2.4.4 kernel that comes
with my distribution. Most of kernel drivers/options are compiled in or compiled as module. I'm
using kernel optimized for my test PC now. Kernel may crash with other options/modules...
Anyway, PHP behaves much better with newer kernel. New behavior is as follows.
* PHP outputs the top part of the test script "<?php phpinfo(); ?>" correctly.
* PHP sends a lot of garbages with the test script.
* Kernel seems to stop freezing.
+ PHP stopped complaining about many memory leaks at shutdown.
Problem:
* When memory limit is enabled, PHP do not terminate script execution even if it is already
exhausted memory. (I get multiple error message for a single execution as attached apache error log)
* PHP can't send proper phpinfo() output.
* PHP segfaults with my scripts.
I changed bug type form Zlib Related to Reproducible crash. If your PHP does not segfault easily,
please let me know. I'll send back trace.
== apache error log start ==
/home/yohgaki/public_html/test/phpinfo.php(1) : Fatal error - Allowed memory size of 8388608 bytes
exhausted at zlib.c:995 (tried to allocate 2915587 bytes)
/home/yohgaki/public_html/test/phpinfo.php(1) : Fatal error - Allowed memory size of 8388608 bytes
exhausted at zlib.c:995 (tried to allocate 2915587 bytes)
/home/yohgaki/public_html/test/phpinfo.php(1) : Fatal error - Allowed memory size of 8388608 bytes
exhausted at zlib.c:995 (tried to allocate 2915587 bytes)
/home/yohgaki/public_html/test/phpinfo.php(1) : Fatal error - Allowed memory size of 8388608 bytes
exhausted at zlib.c:995 (tried to allocate 2915587 bytes)
/home/yohgaki/public_html/test/phpinfo.php(1) : Fatal error - Allowed memory size of 8388608 bytes
exhausted at zlib.c:995 (tried to allocate 2915587 bytes)
/home/yohgaki/public_html/test/phpinfo.php(1) : Fatal error - Allowed memory size of 8388608 bytes
exhausted at zlib.c:995 (tried to allocate 2915587 bytes)
/home/yohgaki/public_html/test/phpinfo.php(1) : Fatal error - Allowed memory size of 8388608 bytes
exhausted at zlib.c:995 (tried to allocate 2915587 bytes)
/home/yohgaki/public_html/test/phpinfo.php(1) : Fatal error - Allowed memory size of 8388608 bytes
exhausted at zlib.c:995 (tried to allocate 2915587 bytes)
/home/yohgaki/public_html/test/phpinfo.php(1) : Fatal error - Allowed memory size of 8388608 bytes
exhausted at zlib.c:995 (tried to allocate 2915587 bytes)
/home/yohgaki/public_html/test/phpinfo.php(1) : Fatal error - Allowed memory size of 8388608 bytes
exhausted at zlib.c:995 (tried to allocate 2915587 bytes)
== end ==
------------------------------------------------------------------------
[2001-10-27 16:24:56] yasuo_ohgaki@yahoo.com
Just an update.
Better procedure to reproduce this bug. I can reproduce this bug on RedHat 7.1(kernel 2.4.7) and
Kondara 2.0(Kernel 2.4.4)
I think this bug is *critical* and better to be fixed/workarounded before 4.1.0 release.... (Or
disable zlib.output_compression?)
Caution: This can crash your linux kernel and may crash filesystem.
1) Get 4.1.0RC CVS source
2) Copy php.ini-recommend to php.ini and enable zlib.output_compression
zlib.output_compression=On
3) configure/build/install PHP 4.1.0RC
'./configure' \
'--with-apxs' \
'--disable-short-tags' \
'--without-mysql' \
'--without-pear' \
'--with-zlib' \
'--enable-debug'
4) Create test php script containing
<?php phpinfo(); ?>
5) restart httpd, diplay the test script
6) Stop httpd and check apache error log see if
memory leak is reported or not.
------------------------------------------------------------------------
[2001-10-27 16:09:07] yasuo_ohgaki@yahoo.com
This bug may be related to following bugs.
http://bugs.php.net/bug.php?id=12270
http://bugs.php.net/bug.php?id=13698
------------------------------------------------------------------------
[2001-10-24 08:46:19] yasuo_ohgaki@yahoo.com
This is not exactly what I've reported, but if following problem is fixed, this bug may be
fixed.
Fixing this may fix bug #13698, also. (CGI version segfaults at shutdown)
php.ini:
php.ini-recommened. Only change I've made is enable ZLIB compression. If zlib compression is
off, it seems working.
Script:
<?php phpinfo(); ?>
Configure:
'./configure' \
'--with-apxs' \
'--disable-short-tags' \
'--without-mysql' \
'--without-pear' \
'--with-zlib' \
'--enable-debug'
PHP:
4.1.0RC CVS (today)
Env:
Linux 2.4.4/glibc 2.2.2/zlib 1.1.3
Apache 1.3.20/modssl 2.8.4
Apache error log:
Unknown(0) : Fatal error - Maximum execution time of 30 seconds exceeded
output.c(307) : Freeing 0x418D502C (9105409 bytes),
script=/home/yohgaki/public_html/test/phpinfo.php
zlib.c(995) : Freeing 0x4147A02C (4565991 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
Last leak repeated 10 times
output.c(289) : Freeing 0x081ADD4C (6144 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
zend_stack.c(45) : Freeing 0x081AC4BC (40 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
zend_stack.c(27) : Freeing 0x081AC38C (256 bytes),
script=/home/yohgaki/public_html/test/phpinfo.php
Last leak repeated 7 times
zend_hash.c(176) : Freeing 0x081AC2F4 (32 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
Last leak repeated 9 times
zend_hash.c(260) : Freeing 0x081AC244 (44 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
Last leak repeated 40 times
main.c(1159) : Freeing 0x081AC194 (44 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
zend_API.c(561) : Actual location (location was relayed)
main.c(1158) : Freeing 0x081AC154 (12 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
main.c(1141) : Freeing 0x081ABC04 (44 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
zend_API.c(561) : Actual location (location was relayed)
main.c(1140) : Freeing 0x081ABBC4 (12 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
php_variables.c(170) : Freeing 0x081ABB24 (12 bytes),
script=/home/yohgaki/public_html/test/phpinfo.php
Last leak repeated 27 times
php_variables.c(47) : Freeing 0x081ABAD4 (27 bytes),
script=/home/yohgaki/public_html/test/phpinfo.php
Last leak repeated 27 times
zend_hash.c(438) : Freeing 0x081AB10C (128 bytes),
script=/home/yohgaki/public_html/test/phpinfo.php
main.c(1022) : Freeing 0x081AA11C (44 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
zend_API.c(561) : Actual location (location was relayed)
main.c(1021) : Freeing 0x081AA0DC (12 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
php_variables.c(229) : Freeing 0x081AA04C (12 bytes),
script=/home/yohgaki/public_html/test/phpinfo.php
Last leak repeated 1 time
php_variables.c(230) : Freeing 0x081A9F94 (44 bytes),
script=/home/yohgaki/public_html/test/phpinfo.php
zend_API.c(561) : Actual location (location was relayed)
Last leak repeated 1 time
output.c(325) : Freeing 0x081A86FC (6145 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
zend_ptr_stack.c(29) : Freeing 0x081A857C (256 bytes),
script=/home/yohgaki/public_html/test/phpinfo.php
Last leak repeated 2 times
zend_ini.c(193) : Freeing 0x081A7744 (31 bytes), script=/home/yohgaki/public_html/test/phpinfo.php
Last leak repeated 2 times
[Wed Oct 24 19:24:43 2001] [warn] child process 4029 still did not exit, sending a SIGTERM
[Wed Oct 24 19:24:47 2001] [error] child process 4029 still did not exit, sending a SIGKILL
[Wed Oct 24 19:24:47 2001] [notice] caught SIGTERM, shutting down
------------------------------------------------------------------------
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/?id=13806
Edit this bug report at http://bugs.php.net/?id=13806&edit=1