2

当存在分段错误并生成进程核心转储时,内核和用户空间(wrt Linux)中发生的事件顺序是什么?

Linux 确实支持 sigsegv 处理程序。如何调用信号处理程序并在返回时生成核心转储?

我正在寻找事件序列和任何指向 linux 内核函数名称的指针(wrt 任何最新的内核)。我将从函数名称中找出其余部分,我知道可以从代码中找出其余部分。

4

1 回答 1

2

当生成 SIGSEGV 时,内核会检查是否有针对它的处理程序。如果有,它会调用它,就像任何其他信号一样。如果有处理程序,则不会生成核心。这发生在 get_signal_to_deliver 中:https ://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/kernel/signal.c#n2192

如果它达到 SIGSEGV 的默认操作,它将生成一个核心转储并退出。coredump 由 fs/coredump.c 中的 do_coredump 生成:https ://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/fs/coredump.c#n485

于 2013-05-19T02:57:34.653 回答