libvirtd启动后不响应任何事件("libvirtd" 0x00007fda03f7670d in fts_children)
现场环境:
其中libvirtd主线程与qmp通信线程均跑在fts_children上,导致后续poll事件无任何响应。
问题分析:
如上图,总共有3次fork,最后qemu2会挂在1号进程下面,目的是防止僵尸进程,其中qemu对应上图的PID909进程,qemu1对应PID916进程,qemu2对应PID917进程;
1、qemu1为僵尸进程是由于qemu未waitpid导致,在此处为正常现象;
2、qemu2为僵尸进程,且其父进程为1号进程,可能是有任务未完成导致,此处其存在与libvirtd通信,即怀疑其domain socket存在问题?
3、qemu为退出由于其与qemu2通过pipe通信未完成导致,即阻塞在管道读的过程中;
4、第2点与第3点的共同点均存在qemu2,且qemu2的子线程此时陷入内存等锁过程中,是否pipe与domain socket之间存在锁竞争关系?
to be continued