Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

python.exe crash and ctypes use

0 views
Skip to first unread message

waldek

unread,
Jul 23, 2008, 9:34:16 AM7/23/08
to
Hi,

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
python.exe.

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."
===========================

Diez B. Roggisch

unread,
Jul 23, 2008, 10:07:34 AM7/23/08
to
waldek wrote:

Attach a debugger of choice to your python-process, and see what happens.

Diez

Thomas Heller

unread,
Jul 23, 2008, 10:39:29 AM7/23/08
to
waldek schrieb:

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.

Thomas

waldek

unread,
Jul 24, 2008, 4:02:18 AM7/24/08
to

In fact ctypes does not keep references to callback passed directly to
dll. Now it works.
Thanks Thomas.

Waldek

0 new messages