C ++程序崩溃与EXIT CODE:9(SIGKILL)

时间:2016-11-30 12:16:58

标签: c++ error-handling

我的应用程序崩溃了EXIT CODE:9(SIGKILL)

我从未运行任何可以杀死正在运行的进程的命令,例如'kill -9(pid)'或'pkill(进程名称)'。

在这种情况下我应该从哪里开始调试?

  1. 我试图在程序崩溃时转储堆栈跟踪,但我发现无法捕获SIGKILL进行错误处理。

  2. 该程序使用MPI并在群集环境中运行。它运行大约1小时后就会死亡。

  3. 是否有任何可能导致SIGKILL异常的常见原因?

    (它在linux上运行;分为os 7)

1 个答案:

答案 0 :(得分:18)

@我回答我自己的问题,以便以后可以得到帮助。

异常是由OutOfMemory引起的。

该过程分配了太多内存,给操作系统带来了压力。操作系统有一个热门人物, oom-killer ,为了系统稳定性而杀死这些进程。 oom-killer使用名为SIGKILL的子弹。

然而,由于SIGKILL是不可见的(它不能被应用程序捕获和处理),对于包括我在内的一些新手来说,找出崩溃的真正原因并不总是很容易。

一个好消息是,当遇到的人杀死你的进程时,它总是将其动作记录在/ var / log / messages。

根据您的操作系统配置,oom-killer可能根本不记录任何消息。在这种情况下,您也可以进行配置。在谷歌搜索rsyslog配置。

Finding which process was killed by Linux OOM killer