我的应用程序崩溃了EXIT CODE:9(SIGKILL)
我从未运行任何可以杀死正在运行的进程的命令,例如'kill -9(pid)'或'pkill(进程名称)'。
在这种情况下我应该从哪里开始调试?
我试图在程序崩溃时转储堆栈跟踪,但我发现无法捕获SIGKILL进行错误处理。
该程序使用MPI并在群集环境中运行。它运行大约1小时后就会死亡。
是否有任何可能导致SIGKILL异常的常见原因?
(它在linux上运行;分为os 7)
答案 0 :(得分:18)
@我回答我自己的问题,以便以后可以得到帮助。
异常是由OutOfMemory引起的。
该过程分配了太多内存,给操作系统带来了压力。操作系统有一个热门人物, oom-killer ,为了系统稳定性而杀死这些进程。 oom-killer使用名为SIGKILL的子弹。
然而,由于SIGKILL是不可见的(它不能被应用程序捕获和处理),对于包括我在内的一些新手来说,找出崩溃的真正原因并不总是很容易。
一个好消息是,当遇到的人杀死你的进程时,它总是将其动作记录在/ var / log / messages。
根据您的操作系统配置,oom-killer可能根本不记录任何消息。在这种情况下,您也可以进行配置。在谷歌搜索rsyslog配置。