Am Donnerstag, 23. Februar 2012, 13:40:03 I wrote:
> Am Mittwoch, 22. Februar 2012, 11:26:50 schrieb Eric Blake:
> > 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.

Okay, I wrote a minimal testcase that does just the operations that lead to 
the problem, only to find out that this won't reproduce the bug either :-\

That means either I'm inadvertently triggering some rare corner case here who 
knows where in my code, or the bug is really in my code. I don't think it's 
the latter, though, because the relevant part of my code looks like this:

if(virDomainCreate(vserver.get_virdomain().get()) != 0) {
        // TODO clean up pointer
        virErrorPtr error = virGetLastError();
        if(error != 0) {
                syslog(LOG_ERR, "Could not start vserver, error code: %d", 
error->code);
                // VIR_ERR_OPERATION_INVALID means the vm was already in a 
started state
                if(error->code != VIR_ERR_OPERATION_INVALID)
                        throw std::runtime_error("Could not start vserver");
                }
        else {
                syslog(LOG_ERR, "Could not start vserver, no error code from 
libvirt");
                throw std::runtime_error("Could not start vserver, no error 
code from 
libvirt");
                }
        }

There's nothing in there between calling virDomainCreate() and 
virGetLastError(). There are no other threads, either.

Anyway, I've fired up gdb now to see if I can find out where the error object 
gets lost.

        Guido

_______________________________________________
libvirt-users mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvirt-users

Reply via email to