On Fri, Mar 15, 2013 at 10:50:08AM +0100, Viktor Mihajlovski wrote: > On 03/15/2013 10:33 AM, Daniel P. Berrange wrote: > > > >No, this really isn't solving the problem. The virConnectDipose > >function is the last thing to run on an object. Once virConnectDispose > >is running absolutely nothing else may safely use that object pointer. > >The thread that is not in virConnectDispose here is missing a reference > >on the object, to prevent it being destroyed while it is still in use. > > > >so NACk to this patch, it doesn't fix the problem, merely makes a SEGV > >slightly less likely. > > > >Daniel > > > > I understand your objection and I have already tested a patch which > increments the object ref counter when registering a close callback. > The unfortunate thing is that the close callback isn't guaranteed to > be deregistered (causing a virsh leaked reference complaint). As my > brain kicks in while I'm typing, this is probably the way to go ... With the existing domain event callbacks we hold a reference on the connection for as long as the callback is set. The app is required to unregister the callbacks prior to closing the connection. So the same approach is fine for the close callback. To prevent the leak in virsh, virsh should be de-registering the callback Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list