ID: 26286 Comment by: adam dot phillips at orange dot net Reported By: igg10 at alu dot ua dot es Status: No Feedback Bug Type: Apache2 related Operating System: Windows 2000 PHP Version: 4.3.4 New Comment:
I experienced the same problem on 2 systems - Win2k with Apache 2.0.48/PHP 4.3.4 and Red Hat Linux with Apache 1.3.29 and PHP 4.3.5. So far as i can tell, the cause of the error is a switch statement. I have a function withian a class module declared as follows: function getsales($scope="", $returnasobjects=false) { } Inside this function is a switch statment based on $scope. There are four cases. The first three perform different functions which all return arrays and the fourth case (which is the default) performs all 3 of the previous cases and merges the results into a single array (I won't write out all the code since it all appears to work outside of this switch statement. Please e-mail if needed). The error occurs in the fourth case but originally the code was identical to that of the first 3 'stuck together'. I have since tried a number of alternatives none of which work. Most intriguing was when instead of using default: for the fourth case i renamed it case "all". Then it worked when called from another page but not when called from within the same class module. I then renamed it "everything" and the opposite was true. I then tried changed my function declaration to function getsales($scope="all", $returnasobjects=false) {} and it wouldn't work in either case. Similarly if i replaced "all" with everything. The final bit of strangeness was that i tried using the following code in the default case return array_merge($this->getsales("case1"), $this->getsales("case2"), $this->getsales("case3")) which wouldn't work even tho each of the cases worked individually. Each time i get the same error in my Apache Error Log Parent: child process exited with status 3221225725 -- Restarting Previous Comments: ------------------------------------------------------------------------ [2004-06-28 16:54:47] joker at localfoo dot info The snippet posted by ''hakk at email dot it'' reproduces the ...Restarting... problem with the following packages also under WinXP/SP1 (not tested under Win2000) ===HOST: P3-1GHz/256MB Notebook Windows XP/SP1 Apache 2.0.49 PHP 4.3.7 (php4apache2.dll) with/without ZendOptimizer 2.5.1 ===TESTED WITH: PHP 4-win32-STABLE-200406272030 (PHP 4.3.8-dev as module) PHP 5-win32-200406271830 (PHP5.0.0-dev as module) ===SNIP OD SYSLOG: Ereignistyp: Informationen Ereignisquelle: Application Popup Ereigniskategorie: Keine Ereigniskennung: 26 Datum: 28.06.2004 Zeit: 16:36:16 Benutzer: Nicht zutreffend Computer: LT04 Beschreibung: Anwendungspopup: apache.exe - Fehler in Anwendung: Die Anweisung in "0x00000000" verweist auf Speicher in "0x00000000". Der Vorgang "read" konnte nicht auf dem Speicher durchgeführt werden. ===END OF SNIP This also occurs on some webapplications (e.g. mamboserver-cms, mylansite). They RIP sometimes under several circumstances preferred running with php as module. They work almost fine with PHP in CGI mode. I also had a user reporting Error 128 instead of 3221225477 ----------------- [Referring: http://bugs.php.net/bug.php?id=26771] The author of Bug 26771 has similar problems (...restarting...) executing the 'tick'-script (see the mentioned BUG report and http://nl.php.net/manual/en/control-structures.declare.php) crashes my constellation without ANY log (Apache2 error) entry. It doesn't even make the ...Restarting... log entry in Apache2 but this occurs on several applications as well. So the 'tick'-script might be an appropriate script for reproducing this error... My host closed with the following syslog message when executing the 'tick': ===SNIP OF SYSLOG: Ereignistyp: Informationen Ereignisquelle: Application Popup Ereigniskategorie: Keine Ereigniskennung: 26 Datum: 28.06.2004 Zeit: 14:26:17 Benutzer: Nicht zutreffend Computer: LT04 Beschreibung: Anwendungspopup: apache.exe - Fehler in Anwendung: Die Anweisung in "0x100c0afd" verweist auf Speicher in "0x00000000". Der Vorgang "written" konnte nicht auf dem Speicher durchgeführt werden. ===END OF SNIP Thx Chris ------------------------------------------------------------------------ [2004-06-15 15:37:05] jstaeb at gmx dot net Hey, same problem with 'PHPRojekt', (see also thread there: http://www.phprojekt.com/modules.php?op=modload&name=forum&file=index&kat=2&id=30946&action=writetext&) Using, Testsummary: ------------------- Win2000 SP4 DE apache 2.0.49 PHP 4.3.7 (no mmcache in ini's, no optimizer) mySQL 4.0.20a Several Tests with (on & off): SSL, perl, pyhton and several ini configs, e.g. register_globals=ON & OFF; MMCache.enabled = 0 & 1 Also as hinted, i copied (php4.3.7!) php4ts.dll, php4ts.lib to system32. In every combination no positive result. Only one difference when I used php4ts.dll & lib in the system32 folger. The php-code creates 2 frames. But this only happens when the files are inside the system32 folder as well. best regards juergen ------------------------------------------------------------------------ [2004-06-09 15:22:10] casuttc at postmail dot ch I have the same problem with Windows 2000 SP4, Apache 2.0.49, php5.0.0RC3 when I use a php-Script with OCI8-functions. Please help me. ------------------------------------------------------------------------ [2004-06-05 15:33:26] info at phpsydney dot com The error moves around. When I add code to pinpoint the error, the error moves because of the extra code. Here is some code and the output. The content of the array becomes corrupt. The foreach goes in to a loop because the array is corrupted after the start of the foreach loop. In the original code in my script, the array contained objects, the objects were corrupted, and then Apache blew up with the 3221225477 error. I replaced the objects with strings and the array still became corrupt, only the symptom changed. I think the 3221225477 error occurs when PHP's variable space becomes corrupt and the corruption damages an object. $attributes = array('name', 'type', 'value'); print('attributes: '); var_dump($attributes); print('<br>'); foreach($attributes as $attribute_key => $attribute_name) { print('At attribute: ' . $attribute_name . ' attributes: '); var_dump($attributes); print('<br>'); if(isset($this->_attribute[$attribute_name])) { unset($attributes[$attribute_key]); } } attributes: array(3) { [0]=> string(4) "name" [1]=> string(4) "type" [2]=> string(5) "value" } At attribute: name attributes: array(2) { [0]=> string(4) "name" [1]=> int(0) } At attribute: 0 attributes: array(2) { [0]=> int(0) [1]=> int(0) } At attribute: 0 attributes: array(2) { [0]=> int(0) [1]=> int(0) } At attribute: 0 attributes: array(2) { [0]=> int(0) [1]=> int(0) } At attribute: 0 attributes: array(2) { [0]=> int(0) [1]=> int(0) } ------------------------------------------------------------------------ [2004-06-04 14:40:57] info at phpsydney dot dot dot net I updated to PHP 4.3.7. Same problem. Have latest Apache 2. I notice people reporting the same error message for modperl, ldap, imagemagick, and tomcat on both Apache 1 and Apache 2. Memory problem? No, I increased from 8 to 200 MB and still same problem in same time. I added var_dump everywhere to see what happens to the script variables. Just before the crash the variables are corrupted as if references were all broken. vardump shows variables within arrays as now containing arrays. Entries in arrays get & in front of them which are not there in earlier vardump. ------------------------------------------------------------------------ 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/26286 -- Edit this bug report at http://bugs.php.net/?id=26286&edit=1