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 :|