Apache 1.3: child pid ddddd exit signal Segmentation fault (11)

Um das Netzwerkkarten-Problem mit dem PE 2850 unter SLES 9 zu lösen, empfahl Dell ja, das neueste Service Pack von SuSE einzuspielen. Dies hatte ich erfolgreich getan. Alles lief auf dem Rechner, bis jetzt traten die Netzwerkkarten-Probleme nicht wieder auf.
Aber: Plötzlich traten beim Apache 1.3 auf ganz bestimmten php-Seiten Abstürze auf. Im error_log fanden sich Einträge der Art
child pid ddddd exit signal Segmentation fault (11)
Diese Fehler waren immerhin reproduzierbar. Zunächst dachte ich, dass bei den Updates eine Library, gegen die der Apache, PHP oder mod_perl gelinkt waren, ausgetauscht wurden und nun die Probleme verursachen. Als aber eine neue Kompilierung dieser drei Bausteine nichts brachte, war guter Rat teuer.
Ich versuchte dann, den Apache dazu zu bewegen, einen Coredump in ein core file zu schreiben. Ich habe also zunächt per ulimit -c unlimited für root die maximale Größenbeschränkung aufgehoben. Der Apache weigerte sich aber nach wie vor, sein core file zu schreiben. Daraufhin habe ich den Prozess als normaler Nutzer ohne uid-Wechsel laufen lassen (an einem Port >1024 natürlich) und für diesen Nutzer das Limit aufgehoben. Wieder ohne Erfolg. (Wenn mir jemand sagen kann, wie zu dem core file komme, würde ich mich freuen.)
Also Griff ich dann zum gdb. Zunächst startete ich den Apache mit der Option -X, um ihn im Vordergrund laufen zu lassen. Per gdb -p konnektierte ich mich an den Prozess (später versuchte ich es auch per run -X -f httpd.conf innerhalb es gdb mit dem gleichen Effekt). Ich rief die Fehler-produzierende Seite auf und erhielt die Meldung
Cannot find user-level thread for LWP ddddd: capability not available
Wie ich mich drehte und wendete, ich kam nicht an die Fehler.produzierende Library…
Plötzlich kam mir die Idee, dass LWP Light Weight Process, also Threads heißen könnte. Da fiel mir ein, dass ich doch gerade was im SAP-Hinweis 171356 darüber gelesen hatte und dass man über die Umgebungsvariable LD_ASSUME_KERNEL=2.4.1 auf die alte Variante zurückschalten kann. Gesagt, getan, und der Apache lief wieder ohne Fehler.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *