[libvirt] [PATCH] fix deadlock when qemu cannot start

Serge Hallyn serge.hallyn at canonical.com
Fri Mar 30 21:11:30 UTC 2012


Quoting Daniel Veillard (veillard at redhat.com):
> On Fri, Mar 30, 2012 at 08:45:35AM -0500, Serge Hallyn wrote:
> > Quoting Daniel Veillard (veillard at redhat.com):
> > > On Fri, Mar 16, 2012 at 02:37:42PM +0800, Wen Congyang wrote:
> > > > When qemu cannot start, we may call qemuProcessStop() twice.
> > > > We have check whether the vm is running at the beginning of
> > > > qemuProcessStop() to avoid libvirt deadlock. We call
> > > > qemuProcessStop() with driver and vm locked. It seems that
> > > > we can avoid libvirt deadlock. But unfortunately we may
> > > > unlock driver and vm in the function qemuProcessKill() while
> > > > vm->def->id is not -1. So qemuProcessStop() will be run twice,
> > > > and monitor will be freed unexpectedly. So we should set
> > > > vm->def->id to -1 at the beginning of qemuProcessStop().
> > 
> > Oh, uh, Huh.  This seems like it could be responsible for what I was
> > reporting a few days ago (*1).  I spent most of yesterday trying to
> > track it down, only to finally realize that the QemuProcessStart would
> > silently die at various places.  So i was getting ready to send an email
> > postulating that what's happening is that a virsh list starts, then
> > a virsh start starts, and when the virsh list ends it somehow causes
> > the virsh start to be killed.
> > 
> > I'll test and see if this patch fixes it.
> 
>   I guess I need to resurect my patch checker, tune it and
> make it send warning on patches not ACK'ed or reviewed automatically,
> or even better make it a web page to avoid boring people.
>   http://libvirt.org/git/?p=patchchecker.git;a=summary
> 
>   I had that patch on my radar and though I took an awful long time
> to review it it's there.
> 
>   BTW I'm late for rc2, I will make it tomorrow I guess, sorry about
> it this is due to events out of my control :-\
> 
> Daniel
> 

Alas, this patch (by itself) doesn't fix the issue for me.




More information about the libvir-list mailing list