libvirt/python
Philipp Hahn eac63161cc Fix SEGV on exit after domainEventDeregister()
When the last callback is removed using domainEventDeregister(), the
events dispatcher is deregistered from the C-library, but
domainEventsCallbacks is still an empty list.
On shutdown __del__() deregisters the dispatacher again, which SEGVs

	# You need the event-loop implementation from the Python examples;
	# give the file a name which is importable by Python.
	ln examples/domain-events/events-python/event-test.py eloop.py
	python -c 'from eloop import *
	import sys

	def dump(*args): print " ".join(map(str, args))

	virEventLoopPureStart()
	c = libvirt.open("xen:///")
	c.domainEventRegister(dump, None)
	c.domainEventDeregister(dump)
	sys.exit(0)'

domainEventDeregister() needs to delete domainEventCallbacks so subsequent
calls to __del__() and domainEventRegister() choose the right code paths.
Setting it to None is not enough, since calling domainEventRegiser() again
would trigger an TypeError.

Signed-off-by: Philipp Hahn <hahn@univention.de>
2010-07-23 13:26:40 -06:00
..
tests maint: simplify some ignore files 2010-06-15 07:31:10 -06:00
.gitignore Re-arrange python generator to make it clear what's auto-generated 2009-09-21 14:41:46 +01:00
Makefile.am Don't ship generated python/libvirt.? files. 2010-04-20 08:13:06 -06:00
README Re-arrange python generator to make it clear what's auto-generated 2009-09-21 14:41:46 +01:00
TODO syntax-check: enforce the no-cvs-keywords prohibition 2008-12-15 10:24:54 +00:00
generator.py Fix up the python bindings for snapshotting. 2010-05-20 13:49:38 -04:00
libvirt-override-api.xml Fix description of virStorageVolGetInfo() 2010-06-18 12:57:54 +02:00
libvirt-override-virConnect.py Fix SEGV on exit after domainEventDeregister() 2010-07-23 13:26:40 -06:00
libvirt-override-virStream.py Add public API definition for data stream handling 2009-09-29 15:48:52 +01:00
libvirt-override.c python: Fix IOErrorReasonCallback bindings 2010-07-14 10:52:18 -04:00
libvirt-override.py Misc syntax-check fixes 2009-09-21 14:41:47 +01:00
typewrappers.c nwfilter: python bindings for nwfilter 2010-04-29 06:46:01 -04:00
typewrappers.h nwfilter: python bindings for nwfilter 2010-04-29 06:46:01 -04:00

README

    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