我的应用程序崩溃并显示退出代码:9 (SIGKILL)
我从未运行过任何可以终止正在运行的进程的命令,例如“kill -9(pid)”或“pkill(进程名称)”。
这种情况下应该从哪里开始调试呢?
我尝试在程序崩溃时转储堆栈跟踪,但发现无法捕获 SIGKILL 进行错误处理。
该程序使用MPI并在集群环境中运行。它在运行大约 1 小时后死亡。
是否有任何常见原因会导致 SIGKILL 异常?
(它运行在linux;centos 7)
@我回答我自己的问题,以便以后有人可以得到帮助。
该异常是由 OutOfMemory 引起的。
该进程分配过多内存,给操作系统带来压力。操作系统有一个杀手,oom杀手,为了系统稳定性而终止此类进程。 oom-killer 使用名为 SIGKILL 的子弹。
然而,由于 SIGKILL 是不可见的(它无法被应用程序捕获和处理),对于包括我在内的一些新手来说,找出崩溃的真正原因并不总是那么容易。
一个好消息是,当杀手杀死你的进程时,它总是将其操作记录在 /var/log/messages 中。
根据您的操作系统配置,oom-killer 可能根本不记录任何消息。在这种情况下,您也可以对其进行配置。在google中搜索rsyslog配置。
查找哪个进程被 Linux OOM Killer 杀死 https://stackoverflow.com/questions/624857/finding-which-process-was-killed-by-linux-oom-killer/624868#624868
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)