New submission from STINNER Victor <victor.stin...@haypocalc.com>: Attached patch implements an handler for the signal SIGSEGV. It uses its own stack to be able to allocate memory on the stack (eg. call a function), even on stack overflow.
The patch requires sigaction() and sigaltstack() functions, but I didn't patched configure.in script. These functions are available on Linux, but should be available on other UNIX OSes. segfault() signal handler supposes that the thread state is consistent (interp->frame chained list). It calls indirectly PyUnicode_EncodeUTF8() and so call PyBytes_FromStringAndSize() which allocates memory on the heap. It clears PyUnicode "defenc" attribute (the result of PyUnicode_EncodeUTF8()) to free directly the memory. To test it, try some scripts in Lib/test/crashers/. One example: -------------------- $ ./python Lib/test/crashers/recursive_call.py Fatal Python error: segmentation fault Traceback (most recent call first): File "Lib/test/crashers/recursive_call.py", line 12, depth 15715 File "Lib/test/crashers/recursive_call.py", line 12, depth 15714 File "Lib/test/crashers/recursive_call.py", line 12, depth 15713 ... File "Lib/test/crashers/recursive_call.py", line 12, depth 3 File "Lib/test/crashers/recursive_call.py", line 12, depth 2 File "Lib/test/crashers/recursive_call.py", line 9, depth 1 Segmentation fault -------------------- ---------- components: Interpreter Core files: segfault_handler.patch keywords: patch messages: 106801 nosy: haypo priority: normal severity: normal status: open title: Segfault handler: display Python backtrace on segfault versions: Python 3.2 Added file: http://bugs.python.org/file17507/segfault_handler.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue8863> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com