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

syk*_*yko 13 c++ error-handling

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

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

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

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

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

是否存在可能导致SIGKILL异常的常见原因?

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

syk*_*yko 22

@我回答我自己的问题,以便有些人可以在以后得到帮助.

该异常是由OutOfMemory引起的.

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

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

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

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

找到Linux OOM杀手杀死的进程