On Wed, Jan 30, 2008 at 07:00:30PM +0100, Jim Meyering wrote: > "Daniel P. Berrange" <berrange@xxxxxxxxxx> wrote: > > > > Not, its a bug in virUnrefDomain/Network - it calls mutex_lock() twice > > in one codepath, instead of calling unlock(). > > > > Of course your patch to avoid the memory leak is still needed - so ACK > > to that, but the locking flaw needs this patch: > > > > Index: src/hash.c > > =================================================================== > > RCS file: /data/cvs/libvirt/src/hash.c,v > > retrieving revision 1.29 > > diff -u -p -r1.29 hash.c > > --- src/hash.c 29 Jan 2008 18:15:54 -0000 1.29 > > +++ src/hash.c 30 Jan 2008 17:42:32 -0000 > > @@ -881,7 +881,7 @@ virUnrefDomain(virDomainPtr domain) { > > return (0); > > } > > > > - pthread_mutex_lock(&domain->conn->lock); > > + pthread_mutex_unlock(&domain->conn->lock); > > return (refs); > > } > > > > @@ -1013,7 +1013,7 @@ virUnrefNetwork(virNetworkPtr network) { > > return (0); > > } > > > > - pthread_mutex_lock(&network->conn->lock); > > + pthread_mutex_unlock(&network->conn->lock); > > return (refs); > > } > > Oh! Two locks in a row. > Amazing that such a problem wasn't exposed sooner. Well I only committed this flaw last week, so not much time to expose it. Fixed in CVS now. Dan. -- |=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=| |=- Perl modules: http://search.cpan.org/~danberr/ -=| |=- Projects: http://freshmeat.net/~danielpb/ -=| |=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list