This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author tzickel
Recipients amaury.forgeotdarc, belopolsky, meador.inge, tzickel
Date 2015-11-05.21:49:01
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1446760142.46.0.74280732074.issue25562@psf.upfronthosting.co.za>
In-reply-to
Content
In Windows, there is a mechanizm called SEH that allows C/C++ programs to catch OS Exceptions (such as divide by zero, page faults, etc..).

Python's ctypes module for some reason forces the user to wrap all ctypes FFI calls with a special SEH wrapper that converts those exceptions to Python exceptions.

For the UNIX people think about it that python installs a signal handler without you asking (or being able to remove it) when calling FFI functions.

The main issue with this, is that when you want to debug why a DLL behaves badly and you want a process dump (or catch the stack trace in the DLL) you can't without attaching a debugger and catching first-chance exceptions (because the ctypes SEH handling masks the issue).

My proposal is to have both in python 2 and in python 3 an option to call an FFI function with selectively using or not SEH.

Here is the SEH wrap (as you can see it's not optional in runtime):
https://github.com/python/cpython/blob/master/Modules/_ctypes/callproc.c#L806
History
Date User Action Args
2015-11-05 21:49:02tzickelsetrecipients: + tzickel, amaury.forgeotdarc, belopolsky, meador.inge
2015-11-05 21:49:02tzickelsetmessageid: <1446760142.46.0.74280732074.issue25562@psf.upfronthosting.co.za>
2015-11-05 21:49:02tzickellinkissue25562 messages
2015-11-05 21:49:01tzickelcreate