Apache/mod_perl/mod_php segfaults
Apache, mod_perl, mod_php, segfaults, Segmentation fault, Lösung
Ein lang andauerndes Problem ist nun endlich gelöst!
Der Produktivbetrieb eines Servers mit Apache, mod_perl und mod_php lag mir seit längerem im Magen. Zunächst lief alles problemlos. Es waren einige Websites mit PHP und eine größere Applikation getrieben unter mod_perl im Betrieb. Doch eines Tages lief das error.log-File von Apache mit segfaults über. Immer wieder starb ein Child-Prozess, was verkürzt ca. so aussah:
... child pid 18912 exit signal Segmentation fault (11) child pid 20058 exit signal Segmentation fault (11) child pid 19400 exit signal Segmentation fault (11) child pid 20276 exit signal Segmentation fault (11) ...
Es gab leider keinerlei Hinweise oder Möglichkeiten, dieses Verhalten zu reproduzieren. Die Analyse der Coredumps mit gdb und das nächtelange Durchforsten aller möglichen Foren und Newsgroups haben auch nichts ergeben. Und ein Update von Apache, mod_perl, mod_php und anderem war ebenfalls sinnlos.
Doch dann letzten Donnerstag, wars soweit. Genervt von diesem Problem habe ich mich nochmals auf die Suche nach einer Lösung begeben.
mod_perl and PHP don't share the environment nicely
Ein "uralt"-Eintrag, den ich bisher anscheinend ignoriert oder nicht gefunden habe.
Bevor ich irgendwas an der bestehenden Konfiguration bzw. dem Code der installierten Applikationen geändert habe, hat mich natürlich der Abschnitt "Reproducing the problem" interessiert. Also auf die Schnelle kompiliert, ausgeführt und: Nichts. Kein Coredump, gar nichts.
Frustriert hab ichs trotzdem probiert. Nach putenv in den PHP-files gegrept und siehe da im Code eines Projektes fand ich zwei Zeilen. Die waren auch erst zu einem späteren Zeitpunkt hinzugefügt worden. Schnell putenv gegen apache_setenv() getauscht und siehe da keine segfaults mehr.
Perl und mod_perl neu zu kompilieren hab ich erst gar nicht versucht.
Keine Kommentare vorhanden.