On Sun, Mar 29, 2009 at 11:36:36PM -0500, Charles Duffy wrote: > Howdy. > > I'm calling libvirt from a program which occasionally has cause to > fork() without an immediate exec(). For the sake of simplicity, I > presently call close() on all my virConnect objects [which I then > delete] before forking and create new ones later. (I'm not forcing an > explicit pre-fork garbage collection at present -- hopefully the close() > should make one unnecessary). > > However, libvirt complains (and very occasionally segfaults) as I try to > close the connections: > > libvir: error : invalid connection pointer in virConnectClose > libvir: error : invalid connection pointer in virConnectClose > > Are there any practices I should be following to avoid this? > Alternatively, if it is likely to be related to an issue in the Python > bindings, is there something I could do to diagnose?
What I think is going on here is: - You explicitly called 'close()' which calls virConnectClose() which releases the underlying virConnectPtr object - Garbage collection later invokes __del__, which tries to call virConnectClose too. The 2nd scenario causes the error message you see. We need to fix the __del__ method, so it only calls virConnectClose(), if the user has not already done so. Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- Libvir-list mailing list Libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list