2011年10月のアーカイブ

Search




TOPページへ

このブログのフィードを取得
[フィードとは]

Powered by
Movable Type 4.23-ja

template by tokyobuddha

 ■■■■■免 責■■■■■
このサイトを参考にしたために発生した一切の損害に「てきとー管理者」は一切関知しませんし、補償もしません。 また、本サイトの記述が正しいことも保証しません。
自己責任にてお願いします。
 -------------------------

Galler Chocolate
ベルギー王室御用達として認定されたチョコレートブランド、ガレー。

岩塩ならクリスタルキンガ
野菜、肉、魚など素材本来の味を引き出します。上質でクセがなく西洋料理はもちろん中華、日本料理にも幅広くお使い頂けます。

Apacheのエラー1

最近
child pid XXXX exit signal Segmentation fault (11)
とか
child pid XXXX exit signal Bus error (7)
のエラーを吐いて、静的データは動いても、動的データでエラーが出るようになった。

複数のドメインを管理しているため、ログは各ドメイン配下に書き込まれる。
大元のログには、上記内容のみの記述しか書き込まれない・・・・

頻繁に発生するので、coreを吐かせるように設定してみた。

先ずは、ulimit設定確認

# ulimit -a
core file size (blocks, -c) 0  ← ここ
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 143360
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 143360
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited


これでは、ダメなので /etc/profile の値を書き換えて、無制限にしてみた。

# ulimit -a
core file size (blocks, -c) unlimited ← ここ
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 143360
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 143360
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited


apacheの設定に下記の記述を追加
CoreDumpDirectory /tmp

そして、Apache再起動
これで、準備OK!!


数日経ったある日、Apacheが死にやがった!
/tmpにはcore.XXXXが複数存在する。

このデータは生の状態では見られないので、gdbコマンドで見る必要が有る。

gdbコマンドはこんな感じで実行する。

gdb -c <(core)file>

それでは、実際に見てみよう
gdb /usr/sbin/httpd -c /tmp/core.28778

ずらずらずら〜〜〜っと出てきて、意味不明w
そこで where と打ってみると、見やすくなるらしい

(gdb) where
#0 0xb7b8f697 in memset () from /lib/libc.so.6
#1 0xb7e5d7ab in apr_password_validate () from
/usr/lib/libaprutil-1.so.0
#2 0xb7808bda in __cxa_finalize () from
/etc/httpd/modules/mod_authn_file.so
#3 0xb7ed5c6e in __cxa_finalize () from
/etc/httpd/modules/mod_auth_basic.so
#4 0xb7f17a0d in ap_run_check_user_id ()
#5 0xb7f18d17 in ap_process_request_internal ()
#6 0xb7f2c63b in ap_process_request ()
#7 0xb7f293ef in ?? ()
#8 0xb7f24a0d in ap_run_process_connection ()
#9 0xb7f24b0c in ap_process_connection ()
#10 0xb7f31694 in ?? ()
#11 0xb7f319a1 in ?? ()
#12 0xb7f323a3 in ap_mpm_run ()


意味はわからないが、ベーシック認証系のエラーっぽい。
確かに、動的データが死んだ時は、ベーシンク認証でID&PASSが通らない。

何故、こんなエラーがでるんだ??

投稿時間: 20:00