Am Mittwoch, 22. Februar 2012, 11:26:50 schrieb Eric Blake: > On 02/22/2012 11:16 AM, Eric Blake wrote: > > On 02/22/2012 07:06 AM, Guido Winkelmann wrote: > >> Hi, > >> > >> As the subject line indicates, when I'm calling virDomainCreate() to > >> start a defined domain, and that command fails because the domain is > >> already running at that point, virGetLastError() will return NULL, > >> instead of a proper pointer to an error code. > >> Libvirt will, however, print an error to the console: > >> > >> libvir: QEMU error : Requested operation is not valid: domain is already > >> running > > > > Any return of NULL without a last error set is a bug. I'm trying to > > chase this down, and hope to have a patch soon. > > I can't reproduce this. I tested on libvirt 0.9.10, starting with an > inactive domain 'dom' and using 'virsh dumpxml dom > dom.xml; virsh > create dom.xml; virsh create dom.xml', and the second create gave me a > proper error message of "Requested operation is not valid: domain is > already active as 'dom'". I cannot reproduce it with virsh either. The problem occured with the C API, maybe virsh does some extra testing before start a domain? Also note that my case did not involve redefining the domain with a new XML definition, just starting a domain that had already been defined before. > Can you post the code snippet you are using to get this situation? Unfortunately, the problem occurs inside a fairly large, and unfortunately not Open-Source, C++ program. I will try to reduce it to a minimal testcase as soon as I get around to it. > Could it be that you have a different name and/or UUID in the xml from > the domain already running (my test obviously reused the same name and > uuid from what is already running). No. I'm essentially just using virDomainLookupByName() and then calling virDomainCreate() on the returned value. I'm not even touching any uuids. Guido