[libvirt] PATCH: 4/28: Thread safety for test driver

Daniel P. Berrange berrange at redhat.com
Tue Dec 2 14:33:57 UTC 2008

On Mon, Dec 01, 2008 at 05:44:14PM +0000, Daniel P. Berrange wrote:
> On Mon, Dec 01, 2008 at 06:26:03PM +0100, Daniel Veillard wrote:
> > On Sun, Nov 30, 2008 at 11:27:14PM +0000, Daniel P. Berrange wrote:
> > I hope it's worth the effort, it's a lot of complexity added.
> > One of the things which worries me is that detecting errors will be
> > hard, you end up with a locked server that can be far from trivial
> > to debug.
> > I'm really wondering how we could automate testing or at least ease the
> > debug,
> It occurred to me that a static analysis tool like CIL really ought to
> be able to check correctness fairly easily. Rich has discussed this a
> little before
>   http://et.redhat.com/~rjones/cil-analysis-of-libvirt/
> Basically since we have a known set of functions which lock the object
> and CIL can give us the code flow within a method, we ought to be able
> to write something that looks at each call of virDomainFindByUUID,
> and then traces the code paths to functiuon return, and validates that
> the unlock call was made. It could likewise check for people calling
> things before acquiring the lock.
> Would be an interesting project..... :-)

Trying out Rich's demo code I got it to generate before & after control
flow diagrams of the 'domain create' functiuon n the QEMU driver


The main problem I had was that CIL doesn't underderstand the 'bool'
data type, so I had to hack  gnulib/lib/c-ctype.{h,c}, src/cgroup.c
and src/xmlrpc.{h,c} to do a s/bool/char/.

Be nice to get rid of these directly in our source tree, or find a compile
flag to automatically turn 'bool' into 'char' ?

|: 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