
On Mon, Jul 20, 2009 at 10:04:31AM +0200, Pritesh Kothari wrote:
I don't think this is quite correct. We call VBoxCGlueInit() in the vboxRegister() function, which is run when libvirt first initializes the whole library.
The real bug is the vboxClose() method which calls vboxUninitialize() which is then calling VBoxCGlueTerm(). So if you have many virConectPtr objects open, the first one you call virConnectClose on will shutdown the entire vbox library, breaking all the other virConnectPtr instances you have active.
IMHO, we should simply delete VBoxCGlueTerm() completely.
Right the VBoxCGlueTerm() is causing the whole problem. Resending the patch with changes as suggested above.
diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c index 74c432e..42c5477 100644 --- a/src/vbox/vbox_tmpl.c +++ b/src/vbox/vbox_tmpl.c @@ -310,6 +310,7 @@ no_memory: }
static int vboxInitialize(virConnectPtr conn, vboxGlobalData *data) { + /* Get the API table for out version, g_pVBoxFuncs is for the oldest version of the API that we support so we cannot use that. */ data->pFuncs = g_pfnGetFunctions(VBOX_XPCOMC_VERSION); @@ -398,7 +399,6 @@ static void vboxUninitialize(vboxGlobalData *data) {
if (data->pFuncs) data->pFuncs->pfnComUninitialize(); - VBoxCGlueTerm();
virDomainObjListFree(&data->domains); virCapabilitiesFree(data->caps);
ACK 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 :|