Daniel Berrange wrote: > On Tue, May 12, 2009 at 11:36:50AM +0200, 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). > > Please re-test with the patch I posted yesterday > > http://www.redhat.com/archives/libvir-list/2009-May/msg00198.html > >> In point of fact, this whole auto-detection thing is fragile. We got away with >> it before because the qemuOpen() routine bombs out before doing the whole >> conn->uri == NULL check, but in general, it's very easy for one buggy driver to >> mess up auto-detection for all drivers. > > The general rule is that a driver should not set conn->uri to non-NULL > until *after* it has determined that it can handle it. > > The problem here was that virtualbox driver was setting the uri to non-NULL, > and only then seeing if virtalbox was available. My patch fixes that logic > ordering bug Yeah, that seems to fix it for me. It would still be nice to make it a little less error-prone, but I don't have any good ideas at the moment. Thanks! -- Chris Lalancette -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list