On Mon, Mar 31, 2008 at 03:53:09PM -0700, Vadim Zaliva wrote:
On Mar 31, 2008, at 11:40, Vadim Zaliva wrote:
>I am trying to track down the problem.
OK, I have been able to reproduce the problem, is C, without Ruby.
Attached is source code
and XML file. Here is a sample output:
Attempt 0:
define
Domain defined with UUID 714b96db-a6b4-a4ea-ad58-39e4b44575c0
lookup by UUID 714b96db-a6b4-a4ea-ad58-39e4b44575c0
Lookup found domain with UUID 714b96db-a6b4-a4ea-ad58-39e4b44575c0
undefine
Attempt 1:
define
Domain defined with UUID 714b96db-a6b4-a4ea-ad58-39e4b44575c0
lookup by UUID 714b96db-a6b4-a4ea-ad58-39e4b44575c0
libvir: Xen Daemon error : GET operation failed:
Failed to lookup by UUID string domain
As you can see, it works OK first time, but the second time, returns
the same UUID, lookup on which fails.
The problem is that you are not freeing the virDomainPtr object
after you undefine the first VM. Libvirt caches virDomainPtr objects
based on the 'name' value. So the second time around you are getting
the cached handle. You are also leaking memory.
You need to call
virDomainFree(virDomainPtr dom)
to actually release the handle.
Dan.
--
|: Red Hat, Engineering, Boston -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 :|