zombie进程

ht4b089n  于 2021-06-10  发布在  Redis
关注(0)|答案(1)|浏览(262)

我正在努力让redis在solaris10上运行,有一些集成测试失败了。我正在研究的测试是这样的:
启动redis
它分叉,子级开始将数据库转储到备份文件(rdb)
实际上有一种父母/孩子/孙子的关系,孙子变成了僵尸,但我注意到,就在我回家前几分钟。
短时间后,测试脚本将sigterm发送给子级
孩子听到了信号,优雅地停了下来
父级调用wait3()
尽管 wait3() 给孩子打电话,结果就成了僵尸。
当我运行它时,测试有90%的时间失败。一旦进入失败状态,它就永远无法恢复。我尝试将测试更改为等待更长的时间,虽然它似乎在进程退出后多次调用wait3(),但在父进程被终止之前,它一直保持这种状态。
不幸的是,我要到下周才能再做这件事,所以我在家里研究。我在google上搜索的大部分内容都是文档或者“为什么进程会变成僵尸?”之类的问题。
这个来自90年代中期的googlegroups线程可能会有所帮助,尽管他们主要讨论的是solaris/sunos的旧版本。

eit6fx6z

eit6fx6z1#

我错了。看起来主节点没有看到它的子节点失败,所以没有 wait .

相关问题