Debugging apache2 Segfault ... leading to possible infinite recursion
Und wieder mal eine tolle Geschichte.
Da ich kürzlich meinen Server gewechselt habe, musste ich auch nochmal sicherstellen, das alles läuft. Bei den gehosteten Seiten ist auch mein Fotblog dabei. Dieses läuft (leider) auf Wordpress und konnte soweit schnell auf dem neuen Server eingerichtet werden. Es lief alles, zumindest auf dem ersten Blick. Als ich ein neues Foto posten wollte merkte ich aber, das nicht alles so war wie ich es gern gehabt hätte. Die Liste mit allen meinem Posts lieferte eine leere Seite, nichts, einfach nur weiß ohne Code.
Nun, kein Problem, auf dem Server eingeloggt und in die error-logs geschaut. Und siehe da, im apache2/error.log habe ich folgendes gefunden:
[Tue Jan 19 21:09:52.388355 2016] [core:notice] [pid 13632] AH00052: child pid 13651 exit signal Segmentation fault (11)
Tja, da schmiert mit also das Apache-Kindchen ab ohne weitere Hinweise zu geben. Also hab ich mal versucht core-dumps für den Apache zu erhalten, gdb etc. installiert und diverse Einstellungen im apache versucht. Aber einfach keinen Core-Dump bekommen.
Beim Suchen nach Lösungen im Internet bin ich dann darüber gestolpert, das der Fehler evtl von php-ssh2 Modul ausgelöst werden könnte. Dieses habe ich dann mal deaktiviert. Hat aber nichts geholfen, das Problem bestnad weiter.
Erst nach stundenlanger Sucherei und Probiererei habe ich dann das hier gefunden: "How to troubleshoot a PHP script that causes a Segmenation Fault?". Tja, das hat mir zwar bei meinem core-dump nicht weitergeholfen, aber mich dazu gebracht auf dem Server mal xDebug zun installieren. Und Zack - Die Seite ging wieder. Das RecursionLimit von xDebug hat das segfault verhindert.
Beim Anschauen der Seite habe ich dann gesehen, das dort ein als Entwurf gespeicherter Beitrag in der Liste war, der nur den Titel und "Entwurf" in der Zeile gelistet hat. Hier fehlten dem Wordpress wohl weiter Infos, die evtl. beim Umzug draufgegangen sind. Zumindest habe ich den Beitrag dann mal gellöscht und alles ist gut. Ich habe dann mal zum Spass versucht das ganze zu reproduzieren, es aber nicht so einfach hinbekommen.
Ende gut, alles gut. Nur core-dumps im Apache habe ich immer noch nicht :(