Linux内核: sequence of events/paths before process coredump happens

标签 linux process kernel coredump segmentation-fault

当出现段错误并生成进程 coredump 时,内核和用户空间(w.r.t Linux)中发生的事件顺序是什么?

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

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

最佳答案

当生成 SIGSEGV 时,内核会检查是否有对应的处理程序。如果有,它将调用它,就像任何其他信号一样。如果有handler,则不会生成core。这发生在 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

关于Linux内核: sequence of events/paths before process coredump happens,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16630680/

相关文章:

.net - 从 .NET 程序与 ffmpeg 交互?

linux - bash 。使一个命令的结果成为另一个命令的参数

c - 在 Linux 内核中处理 UART 轮询期间的 CTRL-C

php - 如何在 ubuntu 14.04 上安装 php 5.3.10

python - 您会为 Linux 系统管理员推荐哪本 Python 书籍?

linux - $!在 shell 脚本中意味着什么

kernel - 托管内核和虚拟机之间的差异

linux - 通过 : use Shell; 重现结果

Java process.waitFor() 不返回

linux - 内核利用 shellcode