From c377fe2b968f8e1a5f276063a41cd4df75d4af2f Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sun, 6 Oct 2013 21:22:42 +0200 Subject: [PATCH] Closes #1215: document better why it is not a good idea to catch e.g. SIGSEGV and refer to faulthandler. Patch by Martin Pool. --- Doc/library/signal.rst | 6 +++++- Misc/ACKS | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Doc/library/signal.rst b/Doc/library/signal.rst index 2a472fe57a4..84e283683d0 100644 --- a/Doc/library/signal.rst +++ b/Doc/library/signal.rst @@ -36,7 +36,11 @@ at a later point(for example at the next :term:`bytecode` instruction). This has consequences: * It makes little sense to catch synchronous errors like :const:`SIGFPE` or - :const:`SIGSEGV`. + :const:`SIGSEGV` that are caused by an invalid operation in C code. Python + will return from the signal handler to the C code, which is likely to raise + the same signal again, causing Python to apparently hang. From Python 3.3 + onwards, you can use the :mod:`faulthandler` module to report on synchronous + errors. * A long-running calculation implemented purely in C (such as regular expression matching on a large body of text) may run uninterrupted for an diff --git a/Misc/ACKS b/Misc/ACKS index 400f5288d16..0a49abf227c 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -974,6 +974,7 @@ Oleg Plakhotnyuk Remi Pointel Guilherme Polo Michael Pomraning +Martin Pool Iustin Pop Claudiu Popa John Popplewell