[libvirt] [PATCH] xm_internal.c: fix locking bug: s/Unlock/Lock/

Daniel P. Berrange berrange at redhat.com
Mon Jan 26 11:33:36 UTC 2009


On Mon, Jan 26, 2009 at 10:50:32AM +0000, Richard W.M. Jones wrote:
> On Thu, Jan 22, 2009 at 07:13:47PM +0000, Daniel P. Berrange wrote:
> > On Thu, Jan 22, 2009 at 08:09:51PM +0100, Jim Meyering wrote:
> > > Merge error?
> > > I'll commit this in an hour or so.
> > 
> > Go for it - how did you notice it ? Just luck ?
> > 
> > This is why I want to get my previous CIL locking test program integrated 
> > into the 'make check' somehow - or at least a separate 'make lockcheck' 
> > rule
> 
> I'm getting a patch ready for this.
> 
> A few things are blocking it at the moment.  As I mentioned on IRC,
> there is a licensing problem with the OCaml autoconf macros:
> 
> http://caml.inria.fr/pub/ml-archives/caml-list/2009/01/233b0823ddc93b99900d055dfa8ab3ae.en.html
> 
> This should be resolved this week.
> 
> The other thing is I found a few bugs in the code which I'm trying to
> understand.  This CIL stuff is bloody complicated and obscure ...

There are certainly some bugs in there - I'm far from convinced that I
got for/while loop handling correctly implemented. It also does not
track locks across variable assignments / aliasing.

eg if you have

   virDomainObjPtr dom = NULL;

   virDomainObjLock(driver->domains[0]);
   dom = driver->domains[0];
   
   ...do something with 'dom'....

It will complain that 'dom' is used while unlocked, because it does not
track that 'driver->domains[0]' is the same as 'dom' in this context.
It wouldn't be too much more work to make that work better, but I didn't
bother at the time, because this scenario only occurred in one place
in the  libvirt code I was checking at the time.


Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list