python.exe crash and ctypes use
theller at python.net
Wed Jul 23 16:39:29 CEST 2008
> I have module A.py and B.dll which exports C functions by cdecl_
> In A.py I pass callback (py callable) to dll. Next, thread inside dll
> simply calls my callback (in a loop). After few secs I got crash of
> How to debug it?
> I'm using winxp and py 2.5.2
> def mycallback(data, size)
> return 0
> CBFUNC = CFUNCTYPE(c_int,POINTER(c_int), c_int)
> dll = cdll.mydll
> if dll.RegisterCallback(CBFUNC(mycallback)) != 0:
> print "Error."
You need the callback function instance - what the CBFUNC(mycallback)
call returns - alive as long as some C code is calling it.
If you don't sooner or later the Python garbage collector will
free it since it seems to be no longer used. ctypes does NOT keep
the callback function alive itself.
More information about the Python-list