[libvirt-users] virDomainMemoryPeek: bad behavior under workload

Daniel P. Berrange berrange at redhat.com
Fri Aug 31 15:20:55 UTC 2012


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 :|




More information about the libvirt-users mailing list