On Fri, Aug 31, 2012 at 08:09:46AM -0700, Daniel P. Berrange wrote:
On Fri, Aug 31, 2012 at 03:23:18PM +0300, NoxDaFox wrote:
> Here's the typical output:
>
> File "/home/nox/workspace/NOX/src/NOX/hooks.py", line 134, in trigger
> hook.trigger(event)
> File "/home/nox/workspace/NOX/src/NOX/hooks.py", line 33, in trigger
> self.handlers[event]()
> File "/home/nox/workspace/NOX/hooks/volatility.py", line 81, in
memory_dump
> for block in Memory(self.ctx):
> File "/home/see/workspace/NOX/src/NOX/lib/libtools.py", line 179, in
next
> libvirt.VIR_MEMORY_PHYSICAL)
> File "/usr/lib/python2.7/dist-packages/libvirt.py", line 1759, in
memoryPeek
> ret = libvirtmod.virDomainMemoryPeek(self._o, start, size, flags)
> SystemError: error return without exception set
Hmm, that's a peculiar message to see - I can't find anywhere in the
libvirt code that uses that particular messages, so I'm not sure what
has gone wrong here.
Oh, I think this might be a python message. Our C binding does
LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virDomainMemoryPeek(domain, start, size, buf, flags);
LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0)
goto cleanup;
py_retval = PyString_FromStringAndSize(buf, size);
cleanup:
VIR_FREE(buf);
return py_retval;
}
In the 'c_retval < 0' check, I think we should have been doing
if (c_retval < 0) {
py_retval = VIR_PY_NONE;
goto cleanup;
}
so we actually return Python's idea of None, rather than C's NULL,
at which point you'd probably see the real error message from
libvirt/QEMU
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|