[libvirt] Bugfix for failing to reconnect to vbox:///session

Daniel P. Berrange berrange at redhat.com
Fri Jul 17 18:35:26 UTC 2009


On Fri, Jul 17, 2009 at 06:57:24PM +0200, Pritesh Kothari wrote:
> Hi All,
> 
> While reconnecting to vbox:///session, since the VBoxCGlueInit() is not 
> intialized, the g_pfnGetFunctions is NULL and thus reconnection fails with 
> SEGV. Fixed this in the patch below.

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. 

Regards,
Daniel

> commit 9df6333b50a8b512b30ec5bbbfd01a2eec6cbf8b
> Author: Pritesh Kothari <Pritesh.Kothari at Sun.com>
> Date:   Fri Jul 17 18:45:57 2009 +0200
> 
>     libvirt: fixed the intialization routine
> 
> diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c
> index 74c432e..2ccfbd8 100644
> --- a/src/vbox/vbox_tmpl.c
> +++ b/src/vbox/vbox_tmpl.c
> @@ -310,6 +310,12 @@ no_memory:
>  }
>  
>  static int vboxInitialize(virConnectPtr conn, vboxGlobalData *data) {
> +
> +    /* Intialize the Glue Library else you can't get to the g_pfnGetFunctions
> +     * function which is needed to fetch the right version of driver */
> +    if ((VBoxCGlueInit() < 0) || (g_pfnGetFunctions == NULL))
> +        goto cleanup;
> +
>      /* 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);

> --
> Libvir-list mailing list
> Libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list


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




More information about the libvir-list mailing list