Re: Bug #11389 Updated: array_walk causes Apache to crash

From: Date: Tue, 13 Nov 2001 10:31:26 +0000
Subject: Re: Bug #11389 Updated: array_walk causes Apache to crash
References: 1 2  Groups: php.dev 
Request: Send a blank email to php-dev+get-70339@lists.php.net to get a copy of this message
Since I don't have CVS account, I just reply with mail. Anyway, I've posted comment about this bug. Since array_walk() assumes user defiend function only changes element value passed. Destorying array itself causes memory problem and users are not supposed to do that. unset($array) will not cause problem everytime, since PHP (OS memory manager) does not erase memory when free() is called. Manual has to warn that user may *only* change element value passed, but not others. User has to accept that. IMHO. The same applies to array_filter also. Is there feasible fix for this problem? -- Yasuo Ohgaki sivev@hotmail.com wrote: > ID: 11389 > User updated by: sivev@hotmail.com > Reported By: sivev@hotmail.com > Status: Critical > Bug Type: Arrays related > Operating System: W98 > PHP Version: 4.0.6 > New Comment: > > But this is not the real script!! > > My real script have a lot of code lines and > functions, a lot of arrays inside other arrays > and so on, i need 'walk' the arrays, and > array_walk crash my code sometimes. > > To work around this bug, i have written my > 'my_array_walk' function in PHP script that > always behave OK. > > I don't need the 'array_walk' function, but > i think this bug must be fixed. > > Previous Comments: > ------------------------------------------------------------------------ > > [2001-11-12 18:13:09] venaas@php.net > > Yes, what happens is that array_walk tries to move > forward to the next element by calling zend_hash_move_forward_ex() which determines that the > hash is inconsistent and bails out. I think this > behavior is good enough. This script is asking for > trouble. It's important that people can't crash Apache, > but I don't mind if weird scripts like this misbehaves. > CVS works okay for me since PHP doesn't crash, but bails > out. For me I get the same behavior if I remove the call > by references (in array_walk call and myfunc declaration). > > > ------------------------------------------------------------------------ > > [2001-11-11 21:34:20] sniper@php.net > > Indeed there is something odd going on: > > <?php > $myarr = array(array(1,2,3), array(1,2,3), array(1,2,3)); > echo "before\n"; > > array_walk($myarr, "myfunc"); > function myfunc(&$value, $key) { > global $myarr; > $myarr=null; > } > > echo "after\n"; > ?> > > This script only echo's "before". > > --Jani > > > ------------------------------------------------------------------------ > > [2001-11-11 06:49:53] sander@php.net > > Reproduced with 4.2.0-dev (200111080300) on Windows 2000. > > Array_walk seems to be pretty buggy. There were a few reports of crashes using array_walk, most > importantly #12776. > > Reopening. > > ------------------------------------------------------------------------ > > [2001-10-21 01:44:42] sniper@php.net > > I can not reproduce this with PHP 4.1.0RC1. > Could you please try the latest development build from > http://www.php4win.com/ > > > ------------------------------------------------------------------------ > > [2001-06-23 17:31:08] sbergmann@php.net > > Reproduced with 4.0.7-dev (latest CVS, Win32) > > ------------------------------------------------------------------------ > > 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=11389 > > > Edit this bug report at > http://bugs.php.net/?id=11389&edit=1 > >

« previous php.dev (#70339) next »