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