Fatal error: Out of memory - Apache hängt sich auf - Bug?

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Re: Fatal error: Out of memory - Apache hängt sich auf - Bug?

Postby Wiedmann » 06. April 2009 20:37

Die Meldung ist eigentlich eindeutig und identisch mit der "normalen" Meldung, wenn PHP nicht mehr genügend Speicher hat.

Die wäre dann:
Fatal error: Allowed memory size of xxx bytes exhausted (tried to allocate yyy bytes) in ...
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Fatal error: Out of memory - Apache hängt sich auf - Bug?

Postby illneaddix » 06. April 2009 21:02

also irgendwas stinkt da bis zum himmel.
heute hatten wir erneut den gleichen fehler. wir haben hunderte einträge mit der fehlermeldung und es sind viele unterschiedliche skripts, die aber genau die gleiche anzahl an bytes nicht zuordnen können. die bytes stimmen exakt bei jedem skript überein. und das macht mich stutzig.

ich werde dies jetzt auf 128 mb setzen, aber ich vermute ganz stark, dass der fehler wieder auftauchen wird...
illneaddix
 
Posts: 12
Joined: 16. November 2006 16:02

Re: Fatal error: Out of memory - Apache hängt sich auf - Bug?

Postby Nobbie » 07. April 2009 09:11

Ich habe jetzt mal ziemlich viel gegoogled und habe mir auch den PHP Source angeschaut. Insgesamt halte ich das Szenario für einen Bug - nur kann ich nicht ohne weiteres sagen, ob es PHP Bug ist oder ein Third Party Bug.

Fakt ist, dieser Fehler taucht so erst seit PHP 5.2.x auf (manche Anwender haben in ihrer Verzweiflung auf 5.1.6 downgegraded).

Bei vielen Anwendern tritt das Problem im Umfeld von Third Party Produkten auf, beispielsweise WordPress oder irgendwelche Shopsysteme.

Im PHP Sourcecode wird mit dieser Fehlermeldung auf zwei unterschiedliche Fehlerursachen reagiert (leider - sonst könnte man den Fehler noch genauer eingrenzen):

a) zum Ausführen des compilierten Codes verwaltet PHP die notwendige Memory selbst in einem sog. "Heap" (= "Haufen"). Dieser Heap wird zur Laufzeit fragmentiert (weil bröckchenweise Speicher angefordert wird und wieder freigeben wird). Wenn die Verwaltung dieses Heaps "zerschossen" wird (eigentich ein Horrorfehler - irgendein Pointer steht dann quer, oder irgendeine Bibliothek, vielleicht auch PHP selbst, hat irgendwo einen Overflow), dann erfolgt o.g. Fehlermeldung.

b) die Fehlermeldung erfolgt auch, wenn im Heap kein ausreichend großes freies Stück mehr gefunden wird und (und das ist der Knackpunkt) wenn ein alloc() (abhängig von Betriebssystem) "in die Hose geht".

Ich persönlich glaube aber, dass der Fall a) der häufigere ist, der Fall b) tritt eigentlich nur ein (oder sollte nur eintreten), wenn das OS wirklich nichts mehr anzubieten hat.

Es gibt einen einzigen Workaround, der bei vielen Anwendern geholfen hat - nämlich die Erhöhung des memory_limits, aber nicht nur in php.ini, sondern noch einmal explizit via ini_set() im betroffenen Script (oder in der index.php, falls das darüber liegt und das Script includiert wird). Also einfach in die erste Zeile schreiben:

Code: Select all
<?php
        ini_set('memory_limit', '128M');
        ...


Ich vermute, dass das nur deswegen hilft, weil der heap dann so groß ist, dass der Overflow (der natürlich immer noch passiert) nicht mehr die gleiche Wirkung zeigt. Wieso das expizite Setzen via ini_set() Erfolg hat, im Gegensatz zur alleinigen Erhöhung in php.ini, kann ich nicht erkennen, dazu müßte ich tiefer in den PHP Source einsteigen. Ich kann nur raten, dass ggf. diese Anweisung eine Neuformatierung (vielleicht auch Defragmentierung) des Heaps zur Folge hat (o.ä.). Ich weiß es nicht - aber probieren geht über studieren.

in Anbetracht dessen, dass dieser Fehler seit PHP 5.2 recht häufig auftritt, liegt der Verdacht nahe, dass etwas mit der Speicherverwaltung in PHP nicht stimmt. Was ich nicht erkennen kann, ob dieser Fehler spezifisch unter Windows öfter auftritt als unter Linux (oder ob er nur unter Windows auftritt?) - auch das wäre sicherlich einen Versuch wert, die ganze Umgebung auf Linux zu portieren.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Fatal error: Out of memory - Apache hängt sich auf - Bug?

Postby illneaddix » 08. April 2009 06:57

Also mal ein kurzer Zwischenbericht. Gestern lief der Server durch. Ich habe nur die Anpassung in der php.ini gemacht.
Sollte das Problem nochmal auftreten, werde ich es auch noch mal mit ini_set versuchen.
illneaddix
 
Posts: 12
Joined: 16. November 2006 16:02

Re: Fatal error: Out of memory - Apache hängt sich auf - Bug?

Postby actionman007 » 08. April 2009 10:22

Hi,

an alle, die hier schon gepostet haben: Möchte mich bei euch schon mal für eurer Hilfeversuche herzlich bedanken. Echt klasse, dass ihr euch auch für uns den Kopf zerbrecht. Ist gerade echt eine unangenehme Situation. Das System lief ja schon länger mit den Einstellungen und Scripten (wobei unser System (ein Browsergame) natürlich ständig weiterentwickelt wird). Hoffe, wir kriegen es möglichst bald in den Griff.
actionman007
 
Posts: 20
Joined: 06. April 2009 07:41

Re: Fatal error: Out of memory - Apache hängt sich auf - Bug?

Postby illneaddix » 09. April 2009 11:17

Heute morgen war es wieder soweit. Jetzt werde ich es mit ini_set versuchen.
illneaddix
 
Posts: 12
Joined: 16. November 2006 16:02

Re: Fatal error: Out of memory - Apache hängt sich auf - Bug?

Postby actionman007 » 15. April 2009 06:39

Kleines Update - Der Fehler tritt leider nach wie vor auf. Mittlerweile sind noch neue Meldungen in der Error.log zu finden. Unter der letzten Out of memory meldung taucht folgendes auf:

Error in my_thread_global_end(): 453 threads didn't exit
zend_mm_heap corrupted

Anschließend wurde ein Prozess vom System wieder neugestartet:

[Tue Apr 14 23:21:29 2009] [notice] Parent: child process exited with status 1 -- Restarting.
[Tue Apr 14 23:21:30 2009] [notice] Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8e mod_autoindex_color configured -- resuming normal operations
[Tue Apr 14 23:21:30 2009] [notice] Server built: Mar 5 2007 11:23:00
[Tue Apr 14 23:21:30 2009] [notice] Parent: Created child process 4432
[Tue Apr 14 23:21:30 2009] [notice] Disabled use of AcceptEx() WinSock2 API
[Tue Apr 14 23:21:30 2009] [notice] Child 4432: Child process is running
[Tue Apr 14 23:21:30 2009] [notice] Child 4432: Acquired the start mutex.
[Tue Apr 14 23:21:30 2009] [notice] Child 4432: Starting 450 worker threads.
[Tue Apr 14 23:21:30 2009] [notice] Child 4432: Listening on port 443.
[Tue Apr 14 23:21:30 2009] [notice] Child 4432: Listening on port 80.
actionman007
 
Posts: 20
Joined: 06. April 2009 07:41

Re: Fatal error: Out of memory - Apache hängt sich auf - Bug?

Postby Nobbie » 15. April 2009 08:28

>zend_mm_heap corrupted

Genau was ich geschrieben habe: die Speicherverwaltung ist zerschossen.

Nun ist die Frage, ob der PHP Core selbst einen Fehler hat (was ich fast nicht glauben würde), oder ob in irgendeiner Bibliothek (meistens Grafikroutinen o.ä.) ein Overflow stattfindet. Da ich Eure Anwendung nicht kenne, kann ich auch nichts dazu sagen. Und so lange ihr auch den Fehler nicht auf ein reproduzierbares Beispiel reduzieren könnt, kann man auch keinen vernünftigen Bug-Report daraus machen.

Bleibt im Grunde nur die Möglichkeit, durch Up- oder Downgrade einzelner (oder aller) Komponenten zu versuchen, den Fehler auszuschließen. Unbefriedigend, aber viel mehr sehe ich da nicht.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Fatal error: Out of memory - Apache hängt sich auf - Bug?

Postby actionman007 » 15. April 2009 10:45

Also diesen Fehler...

Error in my_thread_global_end(): 453 threads didn't exit

...habe ich hierdurch "beheben" können: http://www.schreiber.biz/blog/?p=29

Was die ZEND Fehlermeldung angeht, ist sie bei uns bisher nur 1x in den Loggs aufgetaucht.

Aber wir denken auch schon ganz stark darüber nach das komplette XAMPP Paket auf unserem Webserver zu de- und dann komplett neu zu installieren. Nur wissen wir natürlich nicht, ob das wirklich helfen wird und zudem ist bei diesem Schritt die Hemmschwelle etwas größer, weil es wohl zu einer längeren Downtime kommen würde und das nehmen Browsergame Communitys einem gerne mal übel. :wink:

Ja, es ist ärgerlich, dass der Fehler sich nicht eindeutig reproduzieren lässt, sondern einfach so immer wieder mal auftritt. Ich suche noch weiter im Web, ob es irgendwo einen Hinweis gibt, wie man den Fehler beheben könnte bzw. durch was er ausgelöst werden könnte.

Was deine Vermutung mit den Grafikroutinen angeht, kann es zwar zutreffen, aber ich halte es für relativ unwahrscheinlich, weil wir gar nicht so viel mit Grafiken machen und das was gemacht wird, gibt es eigentlich schon seit längerer Zeit. Der Fehler tritt hingegen erst seit relativ kurzer Zeit auf.
actionman007
 
Posts: 20
Joined: 06. April 2009 07:41

Re: Fatal error: Out of memory - Apache hängt sich auf - Bug?

Postby illneaddix » 07. May 2009 13:47

übrigens konnten wir den fehler mit einer aktualisierung des gesamten xampp pakets beheben.
vielen dank für eure hilfe.
illneaddix
 
Posts: 12
Joined: 16. November 2006 16:02

Previous

Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 21 guests