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