2010/11/24 Eric Blake <eblake@xxxxxxxxxx>: > On 11/24/2010 10:30 AM, Matthias Bolte wrote: >> virConnectClose calls virUnrefConnect which in turn closes >> all open drivers when the refcount of that connection dropped >> to zero. This works fine when you free all other objects that >> hold a ref to the connection before you close it, because in >> this case virUnrefConnect is the one that removes the last >> ref to the connection. >> >> But it doesn't work when you close the connection first before >> freeing the other objects. This is because the other virUnref* >> functions call virReleaseConnect when they detect that the >> connection's refcount dropped to zero. In this case another >> virUnref* function (different from virUnrefConnect) removes the >> last ref to the connection. This results in not closing the >> open drivers and leaking things that should have been cleaned >> up in the driver close functions. >> >> To fix this move the driver close calls to virReleaseConnect. >> --- >> Âsrc/datatypes.c | Â 47 +++++++++++++++++++++++------------------------ >> Â1 files changed, 23 insertions(+), 24 deletions(-) > > ACK - virUnrefConnect still cleans up, by virtue of calling > virReleaseConnect, but now anything else that also releases the > connection also gets to clean up. > Thanks, pushed. Matthias -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list