Re: Could this be a bug?

From: Date: Tue, 14 Sep 2010 06:46:28 +0000
Subject: Re: Could this be a bug?
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-308054@lists.php.net to get a copy of this message
On 09/14/2010 08:33 AM, Thijs Lensselink wrote:
On 09/14/2010 12:16 AM, Camilo Sperberg wrote:
I have some really strange behaviour going on here, and I think it could be a (minor) PHP's bug. I am not really sure about what happens internally, but my best guess would be that after a memory exhaustion, when I try to execute a custom error handler with the register_shutdown_function (which is executed even after a fatal error) and try to access the element that provoked the memory exhaustion, no error should raise instead of *Uninitialized string offset: 0. I have prepared a little test case to reproduce the error and (I hope) can explain the error. <?php date_default_timezone_set('America/Santiago'); ini_set('memory_limit','1M'); ini_set('display_errors',1); error_reporting(-1); function my_error_handler($errno = '0', $errstr = '[FATAL] General Error', $errfile = 'N/A', $errline = 'N/A', $errctx = '') {
This seems to be your error. You set $errctx to be a string. But later on you use it as an array. Remove the = '' part. And it will function as expected.
global $clean_exit; if(empty($clean_exit)) {
     ini_set('memory_limit','16M');
     ob_start();
     echo '<h1>PHP v'.PHP_VERSION.', error N&deg; '.$errno.'</h1>';
?><h4>-- BEGIN COPY --</h4><p style="font-size:110%;margin:50px 0 20px 25px"><em>Error N&deg;:</em><br /><?php echo '<strong>'.$errno.'</strong><br />'; ?><em>Error Detail:</em><br /><?php
     echo '<strong>'.$errstr.'</strong><br /><em>File:</em><br
/><strong>'.$errfile.'</strong><br /><em>Line:</em><br /><strong>'.$errline.'</strong><br /><em>Debug:</em><br />';
     if (isset($errctx['r']['print'])) echo '<p>THIS LINE GIVES THE ERROR,
WHAT SHOULD IT RETURN?</p>';
Maybe i'm missing something here (kinda sick at home) but.. What do you expect to happen here? When i do a var_dump() on $errctx i get string(0) "" That would explain the error you are seeing.
?></p><h4>-- END COPY --</h4><?php
     $content = ob_get_contents();
     ob_end_clean();
     die($content);
} } set_error_handler('my_error_handler'); register_shutdown_function('my_error_handler'); for ($i = 0; $i< 10000; $i++) $a[$i] = mt_rand(1,254); $r['print'] = print_r($a,TRUE); echo '<p>Everything fine.</p>'; $clean_exit = TRUE; * Would this be a bug or is this expected behaviour? I have tested this on PHP v5.2.14, I've not tested it yet on 5.3.3, but I guess it would have the same behaviour. Greetings!


« previous php.general (#308054) next »