On Tue, Nov 29, 2011 at 05:00:54PM +0200, Zeeshan Ali (Khattak) wrote: > From: "Zeeshan Ali (Khattak)" <zeeshanak@xxxxxxxxx> > > This patch doesn't work cause virDomainIsPersistent() is returning '1' > on transient domain for some reason. Send it to list to get some help. > --- > libvirt-gobject/libvirt-gobject-connection.c | 9 +++++++++ > 1 files changed, 9 insertions(+), 0 deletions(-) > > diff --git a/libvirt-gobject/libvirt-gobject-connection.c b/libvirt-gobject/libvirt-gobject-connection.c > index b647bfa..1b0259e 100644 > --- a/libvirt-gobject/libvirt-gobject-connection.c > +++ b/libvirt-gobject/libvirt-gobject-connection.c > @@ -362,6 +362,15 @@ static int domain_event_cb(virConnectPtr conn G_GNUC_UNUSED, > g_signal_emit_by_name(gdom, "stopped::from-snapshot"); > else > g_warn_if_reached(); > + > + if (!virDomainIsPersistent(dom)) { > + g_mutex_lock(priv->lock); > + g_hash_table_steal(priv->domains, uuid); > + g_mutex_unlock(priv->lock); > + > + g_signal_emit(gconn, signals[VIR_DOMAIN_REMOVED], 0, gdom); > + g_object_unref(gdom); > + } > break; Not directly related to this patch since the same pattern is already present in domain_event_cb, but this can race with gvir_connection_close, ie gdom is looked up in domain_event_cb, gvir_connection_close frees priv->domains and its content, domain_event_cb resumes and happily uses gdom which it hasn't reffed and priv->domains. Something similar can also happen between domain_event_cb and gvir_connection_fetch_domains. Christophe
Attachment:
pgpO1gmpO7jYO.pgp
Description: PGP signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list