【发布时间】:2016-09-04 23:03:16
【问题描述】:
我有一个进程可以很好地响应我本地计算机上的CTRL+C。而且它似乎也有效。
但在 EC2 实例上,它会冻结并成为已失效或僵尸进程。
kill -9 <PID> 没有删除它,我必须重新启动 EC2 实例才能正确清理它。
当它运行时,它还会加载一个内部开发的共享库,我对此没有任何影响,也无法访问其中的任何源代码来查看它在做什么。这个库也使用 CUDA 并且似乎启动了多个线程。
我尝试在主线程上安装一个信号处理程序,它确实安装了,但调用 _exit 并没有关闭整个进程,它似乎仍在等待。
为什么这里会发生阻止CTRL+C 干净地退出进程的情况?我可以覆盖或检查其他线程可能在做什么吗?
【问题讨论】:
-
你能检查
ps -ly $PID列S(状态)说什么吗?如果是D,那么进程在uninterruptible sleep。 -
Z.为什么它不会被收获,我以交互方式从 shell 中启动了我的进程?
-
shell 是否仍被列为父进程?作为测试,您是否可以尝试将 SIGCHLD 直接发送到父进程以查看是否会推动它收割?
-
strace显示什么?