[libvirt-users] Running libvirtd outside of a shell results in qemu defunct processes

Roman Mohr rmohr at redhat.com
Tue Sep 11 12:00:17 UTC 2018


Hi,

In KubeVirt we are right now starting libvirt via a wrapper shell
script. I want to remove that wrapper and directly start libvirtd from
our golang code. This means that our golang code is PID 1 in the
container and we start libvirtd as a fork from there.

When I did this, strange things started to happen. Libvirt was still
able to start and manage qemu processes, but stopping the qemu
processes stopped working. I can see that all qemu processes, the ones
with VMs and the ones used by libvirt to do some host capability
detection, stay in the process table as zombies:

qemu        54  0.0  0.0      0     0 ?        Zs   11:44   0:00
[qemu-system-i38] <defunct>
qemu        56  0.2  0.0      0     0 ?        Z    11:44   0:00
[qemu-system-i38] <defunct>
qemu        61  0.0  0.0      0     0 ?        Zs   11:44   0:00
[qemu-system-i38] <defunct>
qemu        63  0.1  0.0      0     0 ?        Z    11:44   0:00
[qemu-system-i38] <defunct>
qemu        70  0.0  0.0      0     0 ?        Zs   11:44   0:00
[qemu-system-x86] <defunct>
qemu        72  0.2  0.0      0     0 ?        Z    11:44   0:00
[qemu-system-x86] <defunct>
qemu        79  0.0  0.0      0     0 ?        Zs   11:44   0:00
[qemu-system-x86] <defunct>
qemu        81  0.2  0.0      0     0 ?        Z    11:44   0:00
[qemu-system-x86] <defunct>
qemu        86  0.0  0.0      0     0 ?        Zs   11:44   0:00
[qemu-system-x86] <defunct>
qemu        88  0.3  0.0      0     0 ?        Z    11:44   0:00
[qemu-system-x86] <defunct>
qemu        93  0.0  0.0      0     0 ?        Zs   11:44   0:00
[qemu-system-x86] <defunct>
qemu        95  0.1  0.0      0     0 ?        Z    11:44   0:00
[qemu-system-x86] <defunct>

So to sum up, when I start our golang wrapper around libvirtd inside a
bash script without "exec" everything works as usual. If I start in
the container pid namespace the golang wrapper directly, or use "exec"
from the bash script, things stop working. I also see the libvirt
repeatedly tries to kill the qemu processes, but they are stuck.

Maybe someone has a clue why things stop working.

Thanks and Best Regards,

Roman




More information about the libvirt-users mailing list