【问题标题】:Linux kernel: sequence of events/paths before process coredump happensLinux内核:进程核心转储发生之前的事件/路径序列
【发布时间】:2013-05-19 01:41:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: linux process kernel coredump segmentation-fault


    【解决方案1】:

    当生成 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 2011-01-16
      • 2014-01-24
      • 2010-11-24
      • 2017-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多