Apache – child pid exit signal Segmentation fault – Kurzanleitung

Veröffentlichung 16. Juli 2018 @ 17:38
Letzte Änderung 29. August 2018 @ 10:59

Überblick

  • Fehlermeldung in /var/log/apache2/error.log: [xxx] [core:notice] [pid xxx] AH00051: child pid xxx exit signal Segmentation fault (11), possible coredump in /etc/apache2
  • Fehlersuche in Core Dump mit GNU Project Debugger GDB
  • Kernel-Konfiguration für core_pattern in /proc/sys/kernel/core_pattern entspricht sysctl-Parameter kernel.core_pattern

Voraussetzungen

Software

  • Apache 2.4.18 #apache2 -v
  • GNU Project Debugger GDB 7.11.1 #gdb –version
  • Ubuntu Server 16.04.04 LTS #lsb_release -a

Ordner und Dateien

  • Konfiguration /etc/apache2/apache2.conf, /etc/init.d/apache2, /etc/sysctl.conf, /proc/sys/kernel/core_pattern
  • Log /tmp, /var/log/apache2/error.log

Verzeichnis für Core Dumps in Apache-Konfiguration hinterlegen

...
CoreDumpDirectory /tmp

Größenbegrenzung für Core Dumps vor Apache-Start aufheben

Apache-SysVinit-Skript ergänzen

...
do_start()
{
  ulimit -c unlimited #Größenbegrenzung für Core Dumps aufheben
...

systemd-Konfigurationsdateien neu laden und Units neu starten

systemctl daemon-reload

Aufbau der Core-Dump-Dateinamen festlegen

Format core-Programm-Hostname-PID-UID-GID-Zeitstempel

Temporär bis zum nächsten Neustart

echo "/tmp/core-%e-%h-%p-%u-%g-%t" > /proc/sys/kernel/core_pattern

Dauerhaft bei jedem Systemstart

...
kernel.core_pattern=/tmp/core-%e-%h-%p-%u-%g-%t
sysctl --load=/etc/sysctl.conf

Konfiguration testen, Apache neustarten und Status abfragen

apache2ctl configtest
systemctl restart apache2
systemctl status apache2.service

GNU Project Debugger GDB installieren

apt install gdb

Core Dump analysieren

gdb /usr/sbin/apache2 /tmp/core-xxx-xxx-xxx-xxx-xxx-xxx
  ...
  (gdb) bt full
  ...

Aufhebung der Größenbegrenzung für Core Dumps vor Apache-Start rückgängig machen und Apache neu starten

...
do_start()
{
  #ulimit -c unlimited #Größenbegrenzung für Core Dumps aufheben
...
systemctl daemon-reload
systemctl restart apache2

[Optional] Core-Dump-Dateien löschen

rm /tmp/core-*

Quellen

/usr/share/doc/apache2/README.backtrace
https://httpd.apache.org/
https://httpd.apache.org/dev/debugging.html#crashes
http://manpages.ubuntu.com/manpages/xenial/man5/core.5.html
http://manpages.ubuntu.com/manpages/xenial/man1/gdb.1.html
http://manpages.ubuntu.com/manpages/xenial/man8/sysctl.8.html
http://manpages.ubuntu.com/manpages/xenial/man5/sysctl.conf.5.html
https://support.plesk.com/hc/en-us/articles/213366549-How-to-trace-Apache-segmentation-fault-
https://www.gnu.org/software/gdb/

Schreibe einen Kommentar