summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2011-05-07 10:20:11 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2011-05-07 10:20:11 (GMT)
commitc925617b5455867b7b393c6ca66f133aab450a6b (patch)
treec72364f1c7acfd0768234a86e3bed10fc1bed5e6 /Modules
parent97c3eb4ed5a66e632972f8b958395da93ad57369 (diff)
downloadcpython-c925617b5455867b7b393c6ca66f133aab450a6b.zip
cpython-c925617b5455867b7b393c6ca66f133aab450a6b.tar.gz
cpython-c925617b5455867b7b393c6ca66f133aab450a6b.tar.bz2
faulthandler: save/restore errno in the two signal handlers
Diffstat (limited to 'Modules')
-rw-r--r--Modules/faulthandler.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/Modules/faulthandler.c b/Modules/faulthandler.c
index 48c4391..8f83ab8 100644
--- a/Modules/faulthandler.c
+++ b/Modules/faulthandler.c
@@ -238,6 +238,7 @@ faulthandler_fatal_error(int signum)
unsigned int i;
fault_handler_t *handler = NULL;
PyThreadState *tstate;
+ int save_errno = errno;
if (!fatal_error.enabled)
return;
@@ -285,6 +286,7 @@ faulthandler_fatal_error(int signum)
_Py_DumpTraceback(fd, tstate);
}
+ errno = save_errno;
#ifdef MS_WINDOWS
if (signum == SIGSEGV) {
/* don't call explictly the previous handler for SIGSEGV in this signal
@@ -593,6 +595,7 @@ faulthandler_user(int signum)
{
user_signal_t *user;
PyThreadState *tstate;
+ int save_errno = errno;
user = &user_signals[signum];
if (!user->enabled)
@@ -614,6 +617,7 @@ faulthandler_user(int signum)
return;
_Py_DumpTraceback(user->fd, tstate);
}
+ errno = save_errno;
}
static int