相关疑难解决方法(0)

进程停留在退出,显示为僵尸,但无法收获

我有一个由其父级监控的进程.孩子遇到一个导致它打电话的错误abort.该过程不会篡改中止进程,因此它应按预期进行(转储核心,终止).父母应该检测孩子的终止并触发一系列事件来响应失败.孩子是多线程和复杂的.

这是我从中看到的ps:

F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
0  1000  4929  1272  20   0  85440  6792 wait   S+   pts/2      0:00 rxd
1  1000  4930  4929  20   0      0     0 exit   Zl+  pts/2     38:21 [rxd] <defunct>
Run Code Online (Sandbox Code Playgroud)

因此,孩子(4930)已经终止.这是一个僵尸.我不能像预期的那样依附于它.但是,父母(4929)在以下情况下受阻:

int i;
// ...
waitpid (-1, &i, 0);
Run Code Online (Sandbox Code Playgroud)

所以看起来这个孩子是一个僵尸,但不知何故还没有完成其父母收获所需的一切.我认为,这个WCHAN领域exit是一个有价值的线索.

该平台是64位Linux,Ubuntu 13.04,内核3.8.0-30.孩子似乎没有倾倒核心或做任何事情.我离开了系统几分钟,没有任何改变.

有没有人有任何想法可能导致这个或我能做些什么呢?

更新:另一个有趣的信息 - 如果我kill -9是父进程,孩子就会消失.这有点莫名其妙,因为父进程很简单,只是阻塞waitpid.此外,当出现此问题时,我没有得到任何核心转储(来自孩子).

更新:孩子似乎陷入了困境schedule,被召唤exit_mm,来自do_exit.我想知道为什么 …

linux ubuntu exit

3
推荐指数
1
解决办法
2449
查看次数

标签 统计

exit ×1

linux ×1

ubuntu ×1