#40812 [Opn->Fbk]: PHP sometimes returns blank document when allocating too much memory
ID: 40812
Updated by: tony2001@php.net
Reported By: chmelar at busche dot sk
-Status: Open
+Status: Feedback
-Bug Type: Output Control
+Bug Type: Unknown/Other Function
Operating System: Fedora Linux 2.6
PHP Version: 5.2.1
New Comment:
Please try using this CVS snapshot:
http://snaps.php.net/php5.2-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5.2-win32-latest.zip
Previous Comments:
------------------------------------------------------------------------
[2007-03-15 08:50:08] chmelar at busche dot sk
Description:
------------
Sometimes when PHP tries to allocate too much memory, it crashes
without an error message and produces a blank screen.
Reproduce code:
---------------
This occurs after running this script (it doesn't crash always, so try
to refresh 5-10 times until it returns nothing (zero sized reply)):
<?php
function myErrorHandler($errno, $errmsg, $filename, $linenum, $vars) {
ini_set('memory_limit', '10M');
echo "Error occured";
die();
};
ini_set('memory_limit', '1M');
error_reporting(E_ALL | E_STRICT);
set_error_handler('myErrorHandler');
$a=array();
$aLen=rand(2048,65535);
echo "trying to initialize an array with ".$aLen." items (randomly
generated)...
\n";
$i=0;
while ($i<$aLen && (rand(1,65534)<65533 || rand(1,65534)>2)) {
$varName='a_'.chr(rand(65,90)).chr(rand(65,90)).chr(rand(65,90)).chr(rand(65,90)).chr(rand(65,90));
$$varName=rand(0,255);
//$a[]=rand(0,255);
$i++;
};
echo "successfuly initialized an array with ".count($a)." items. please
refresh";
?>
Expected result:
----------------
Usually (in normal cases) the error handler should write "Error
occured" to the output and end the script.
Looks like the code allocates small chunks of memory (about 40 bytes),
and when it tries to allocate the next chunk and it doesn't have enough
memory, it tries to trigger an error, BUT there is the problem that by
triggering error 4 or 5 parameters are passed to the error handler -
that means PHP needs to allocate space for them. But the error message
text itself has more than 100 charactes, so it doesn't fit to the free
memory block and PHP just crashes. So it seems to be a PHP bug.
Actual result:
--------------
Zero sized reply (MS IE7) or blank screen (FF 1.5)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=40812&edit=1
Thread (3 messages)