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