5
(ここで私はLinuxのみをターゲットにしています)コアダンプファイルは誰が生成しますか?カーネルかglibc?
私はコアがglibcのデフォルトシグナルハンドラによって生成されていると仮定しています。
私はgoogleの結果のほとんどは、OSがコアダンプを生成すると言います。 OSがコアを生成した場合、シグナルハンドラは最初にコアダンプされますか?
(ここで私はLinuxのみをターゲットにしています)コアダンプファイルは誰が生成しますか?カーネルかglibc?
私はコアがglibcのデフォルトシグナルハンドラによって生成されていると仮定しています。
私はgoogleの結果のほとんどは、OSがコアダンプを生成すると言います。 OSがコアを生成した場合、シグナルハンドラは最初にコアダンプされますか?
カーネル自体がコアダンプを生成します。ここでは、Linuxカーネルソースにコア処理ルーチンを参照してください。
http://lxr.linux.no/linux+v3.12.6/fs/coredump.c
プロセスは、以下の信号1のいずれかを受信した場合、カーネルはコアダンプを試みることによって応答します。
#define SIG_KERNEL_COREDUMP_MASK (\
rt_sigmask(SIGQUIT) | rt_sigmask(SIGILL) | \
rt_sigmask(SIGTRAP) | rt_sigmask(SIGABRT) | \
rt_sigmask(SIGFPE) | rt_sigmask(SIGSEGV) | \
rt_sigmask(SIGBUS) | rt_sigmask(SIGSYS) | \
rt_sigmask(SIGXCPU) | rt_sigmask(SIGXFSZ) | \
SIGEMT_MASK
このコアダンプは設定可能であり、かつファイル/proc/sys/kernel/core_pattern
、およびulimit
を含むいくつかの方法で無効にしたり、制御することができます。信号処理機構を介してこれらの信号の供給を制御することもできる。
最初にコアがダンプされるか、最初にシグナルハンドラが呼び出されますか? –
シーケンス:1-イベントが発生する(セグメンテーション・フォルトのように)2カーネルがこのイベントのプロセスに信号で通知する3プロセス・ハンドルシグナル(ユーザがインストールしたハンドラまたはデフォルト・ハンドラのいずれか)4上記のシグナルは、デフォルトのシグナルハンドラを使用します。 – Peter