[libvirt] [PATCH 2/2] Lock the whole virConnect Object when disposing to avoid the thread race

Osier Yang jyang at redhat.com
Wed Dec 5 16:42:07 UTC 2012


On 2012年12月06日 00:23, Daniel P. Berrange wrote:
> On Wed, Dec 05, 2012 at 10:48:44PM +0800, Osier Yang wrote:
>> https://bugzilla.redhat.com/show_bug.cgi?id=866524
>>
>> Since the virConnect object is not locked wholely when doing
>> virConenctDispose, a thread can get the lock and thus might
>> cause the race.
>
>
>> This patch is to fix it by locking the whole virConnect object when
>> disposing it.
>
> No, this is wrong. If two threads are using an object, they
> must each be holding a reference on the object. virConnectDispose
> is the *last* thing to happen to an object. If a 2nd thread is
> still using an object when virConnectDipose runs, then by definition,
> it has forgotten to hold a reference count.

Er, right.

Locking cannot save you
> at this point - the 2nd thread will end up waiting on a mutex that
> has been destroyed

Okay, I did the wrong thing, pushed your version. Thanks.

Regards,
Osier




More information about the libvir-list mailing list