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

Reply via email to