Konrad Rzeszutek Wilk writes ("libvirtd live-locking on CTX_LOCK when doing
'virsh <domid> save /tmp/blah' with guest corrupting memory (on
purpose)."):
It looks like thread #10 is blocking in libxl_read_exactly waiting
for 'libxl-save-helper'. Said application (see below) has dispatched
an message through helper_getreply and is blocking on __read_nocancel.
This is not supposed to block.
helper_stdout_readable assumes that the fd is actually readable.
However, for complicated reasons it can happen in a multithreaded
program that the fd was _reviously_ readable and is now no longer.
This was not clearly documented in the internal API documentation.
I have produced what I think are two patches that will fix this. I
have compiled them but I haven't tested them. Konrad, are you able to
check whether they fix your bug ?
If they do they are candidates for backporting.
Thanks,
Ian.