web サイトで何も表示されない現象が発生!
エラーログを確認すると Segmentation fault
が発生していました。
[Tue Aug 24 15:41:48.681377 2021] [core:notice] [pid 2777] AH00052: child pid 2781 exit signal Segmentation fault (11)
しかし、これだけは何が原因なのか全くわからないので core dump ファイルから調査することになりました。
core dump ファイル出力設定、gdb 調査の備忘録です。
- 環境
- amazonlinux2
- Apache/2.4.48
- PHP 7.2.34
- t2.nano,t2.medium
core dump ファイルの出力設定
現状の出力設定を確認してみます。
確認には、 ulimit -a
コマンドを利用します。
core file size (blocks, -c) 0 -> いまこれ
core file size (blocks, -c) unlimited -> こうなりたい
core file の上限が 0
で出力できない状態なので設定を変更します
-
/etc/security/limits.conf
に設定を追加
* soft core unlimited
* hard core unlimited
-
/proc/sys/kernel/core_pattern
に出力先パスと書式を指定
echo "/var/local/dumps/core.%e.%p"> /proc/sys/kernel/core_pattern
%e: プロセス名
%p: PID
- 恒久的に出力先パスを指定する場合は、
/etc/sysctl.conf
に設定
kernel.core_pattern = /var/local/dumps/core.%e.%p
-
httpd.conf
に出力先パスを指定
CoreDumpDirectory /var/local/dumps
httpd を再起動します。
core dump ファイルの解析準備
必要なパッケージ、コマンドをインストールします
- gdb, gcc
yum install -y gdb
yum install -y gcc
- debuginfo パッケージ
gdb コマンド実行結果にno debugging symbols found
が表示された場合、debuginfo パッケージをインストールします。
debuginfo-install httpd-2.4.48-2.amzn2.x86_64
core dump ファイルの解析
gdb コマンドに core dump ファイルのプロセスが
gdb {core dump ファイルプロセスの実行ファイル} {coreファイル}
gdb /usr/sbin/httpd -c /var/local/dumps/{coreファイル名}
・・・
(gdb)
backtrace を入力
(gdb) backtrace
参考にさせていただきました
ありがとうございました。