mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 04:25:18 +00:00
63bfc59823
A user reported this crash when using python bindings: 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 In the python bindings, returning NULL makes python think an exception was thrown, while returning the None object lets the wrappers know that a libvirt error exists. Reported by Nox DaFox, fix suggested by Dan Berrange. * python/libvirt-override.c (libvirt_virDomainBlockPeek) (libvirt_virDomainMemoryPeek): Return python's None object, so wrapper knows to check libvirt error.
libvirt Python Bindings README ============================== Most of the libvirt python binding code is automatically generated using the script generator.py, and the API description from docs/libvirt-api.xml Manually written files: - libvirt-override.c: methods where the C binding needs to be hand crafted - libvirt-override.py: global methods where the C and python bindings have different args - libvirt-override-api.xml: methods where the auto-extracted API docs are not suitable for python auto-generator. Overriding this if the method is going into libvirt-override.c, but we still want auto-generated libvirt-override.py - libvirt-override-virConnect.py: virConnect class methods - typewrappers.h,.c: Python object wrappers for each libvirt C object Auto-generated files: - libvirt.py: The main python binding. Comprises auto-generated code, along with contents from libvirt-override.py and libvirt-override-virConnect.py - libvirt.c, libvirt.h: The C glue layer for the python binding. Comprises auto-generated code, along with libvirt-override.c - libvirt-export.c: List of auto-generated C methods, included into the libvirt-override.c method table