- PR -

コアファイルが出力されない

1
投稿者投稿内容
H-Kino
会議室デビュー日: 2007/11/26
投稿数: 3
投稿日時: 2007-11-26 18:03
Redhat Linuxにおけるコアファイルを出力するルールを、
どなたかお教えいただけませんでしょうか。

自社開発したサーバプログラムがSegmentation faultで落ちる原因を
解析するために、コアファイルを取得しようとしておりますが、
サーバープログラムがSegmentation faultで落ちた時に、
Coreファイルが吐き出されません。

現状は以下の様になっております。

コアファイルを吐き出させるために、
/etc/profileに以下の記述変更を行いました。
ulimit -S -c unlimited > /dev/null 2>&1

そして、メモリアクセス違反が起こるようなプログラム(現在コアファイルを取得しようとしているプログラムとは別)を作成し、
プログラムを実行して、コアファイルが吐き出されることを
確認しました。

そして、上のサーバープログラムを再起動しました。
ちなみに、サーバープログラムは、クーロンでシェルスクリプトを起動して
再起動しました。

上のサーバープログラムを置いているロジカルボリュームは、
15Gほど空いております。

サーバプログラムがダウンしたときのシステムログのメッセージは以下でした
segfault at 000000007c817083 rip 00000000f7eceb3b rsp 00000000f3b99e20 error 4

☆環境
Redhat Linux ES 4 x86_64


[ メッセージ編集済み 編集者: H-Kino 編集日時 2007-11-26 18:03 ]
H-Kino
会議室デビュー日: 2007/11/26
投稿数: 3
投稿日時: 2007-11-27 14:57
解決いたしました。ご面倒をおかけいたしました。

クーロンで、コアファイルを取得したいサーバープロセスを再起動しておりましたが、
/etc/init.d/functionsに
 ulimit -S -c unlimited
を記述し、crondデーモンを再起動したところ、
コアファイルを取得することができました。

クーロンでシェルスクリプトを実行する場合、
crondデーモンの設定がクーロンから呼び出したシェルに
引き継がれているということでしょうか。

ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2007-11-27 19:12
そういうことになりますね。
というか、cronに限らず一般的に、子プロセスは親プロセスの
リソース制限を引き継ぎます。
H-Kino
会議室デビュー日: 2007/11/26
投稿数: 3
投稿日時: 2007-11-28 14:40
>というか、cronに限らず一般的に、子プロセスは親プロセスの
>リソース制限を引き継ぎます。

なるほど。そのようなポリシーがあるのですね。
勉強になりました。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)