[libvirt] QEMU/KVM auto-detection bug

Chris Lalancette clalance at redhat.com
Tue May 12 09:55:17 UTC 2009

Pritesh Kothari wrote:
> On Tuesday 12 May 2009 11:36:50 Chris Lalancette wrote:
>> All,
>>      Even with Guido/Pritesh's recent changes to the vbox open routine, the
>> auto-detection in libvirt is currently broken.  What happens is that in
>> src/libvirt.c:do_open(), at the start of the loop to auto-detect drivers,
>> ret->uri is NULL.  As each driver declines, it remains NULL.  However, the
>> very first thing the vboxOpen() routine does is:
>>     if (conn->uri == NULL) {
>>         conn->uri = xmlParseURI(uid ? "vbox:///session" :
>> "vbox:///system"); if (conn->uri == NULL) {
>>             return VIR_DRV_OPEN_ERROR;
>>         }
>> So, any driver that is trying to auto-probe after vboxOpen sees a conn->uri
>> with a scheme of vbox and a path of system/session, and they all fail
>> (including Qemu, which is what I'm mostly concerned with at the moment).
> this seems to be common case in all other drivers also, for example uml, 
> openvz, etc does the same and not to mention that qemu driver does it also, so 
> i guess the fix should apply to all and not just vbox driver.

Well, yes and no.  They all do it, but only *after* doing their probe routines.
 At least, I've never had a problem with auto-detection until I enabled vbox to
build in my libvirt config.

Like I said, though, the whole thing is fragile, and yes, I would prefer
something that would help all of the drivers.  Resetting the conn->uri pointer
to NULL in each iteration of the loop is tempting and easy, but on the other
hand, it could easily cause resource leaks in drivers to go undetected.

Chris Lalancette

More information about the libvir-list mailing list