Bug #12227 Updated: Output puffering causes Apache to SIGSEGV
| From: | yohgaki@php.net | Date: | Wed, 12 Dec 2001 09:31:14 +0000 |
| Subject: | Bug #12227 Updated: Output puffering causes Apache to SIGSEGV | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-73239@lists.php.net to get a copy of this message | ||
ID: 12227
Updated by: yohgaki
Reported By: brueckner@respublica.de
Old Status: Open
Status: Feedback
Bug Type: Output Control
Operating System: Linux 2.2.16-SMP
PHP Version: 4.0.6
New Comment:
I guess you have ob_end_clean() or ob_end_flush() in your auto prepend file. Do you?
Anyway, does this happen with 4.1.0?
Previous Comments:
------------------------------------------------------------------------
[2001-07-18 06:13:58] brueckner@respublica.de
One more comment which I forgot before:
This does NOT happen when I do not use auto_prepend_file and call my function inside the main script
instead.
------------------------------------------------------------------------
[2001-07-18 06:07:05] brueckner@respublica.de
When using ob_start() with a script included via auto_prepend_file and then doing something like
this:
ob_start("my_flush");
function my_flush($buffer)
{
$buffer = preg_replace("/(<!--REPLACE\\s.*?-->)/e",
"parse(\"\\1\")",
$buffer);
return $buffer;
}
PHP 4.0.6 SIGSEGV's with this message in the error_log:
[Wed Jul 18 11:55:08 2001] Script: '/home/htdocs/test.php'
---------------------------------------
output.c(235) : Block 0x0824C940 status:
Beginning: Overrun (magic=0x08294990, expected=0x7312F8DC)
End: Unknown
---------------------------------------
./zend_execute.c(334) : Freeing 0x082A8CB4 (28131 bytes), script=/home/htdocs/test.php
zend_variables.c(117) : Actual location (location was relayed)
[Wed Jul 18 11:55:08 2001] [notice] child pid 30192 exit signal Segmentation fault (11)
If I replace the line
$buffer = preg_replace("/(<!--REPLACE\\s.*?-->)/e",
"parse(\"\\1\")",
$buffer);
with
$newbuffer = preg_replace("/(<!--REPLACE\\s.*?-->)/e",
"parse(\"\\1\")",
$buffer);
it works fine.
Any ideas for a fix?
Harry
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=12227&edit=1