summaryrefslogtreecommitdiffstats
path: root/Modules/faulthandler.c
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/faulthandler.c')
-rw-r--r--Modules/faulthandler.c38
1 files changed, 23 insertions, 15 deletions
diff --git a/Modules/faulthandler.c b/Modules/faulthandler.c
index ee00719..568724b 100644
--- a/Modules/faulthandler.c
+++ b/Modules/faulthandler.c
@@ -843,24 +843,16 @@ faulthandler_read_null(PyObject *self, PyObject *args)
{
volatile int *x;
volatile int y;
- int release_gil = 0;
- if (!PyArg_ParseTuple(args, "|i:_read_null", &release_gil))
- return NULL;
faulthandler_suppress_crash_report();
x = NULL;
- if (release_gil) {
- Py_BEGIN_ALLOW_THREADS
- y = *x;
- Py_END_ALLOW_THREADS
- } else
- y = *x;
+ y = *x;
return PyLong_FromLong(y);
}
-static PyObject *
-faulthandler_sigsegv(PyObject *self, PyObject *args)
+static void
+faulthandler_raise_sigsegv(void)
{
faulthandler_suppress_crash_report();
#if defined(MS_WINDOWS)
@@ -880,6 +872,22 @@ faulthandler_sigsegv(PyObject *self, PyObject *args)
#else
raise(SIGSEGV);
#endif
+}
+
+static PyObject *
+faulthandler_sigsegv(PyObject *self, PyObject *args)
+{
+ int release_gil = 0;
+ if (!PyArg_ParseTuple(args, "|i:_read_null", &release_gil))
+ return NULL;
+
+ if (release_gil) {
+ Py_BEGIN_ALLOW_THREADS
+ faulthandler_raise_sigsegv();
+ Py_END_ALLOW_THREADS
+ } else {
+ faulthandler_raise_sigsegv();
+ }
Py_RETURN_NONE;
}
@@ -1020,12 +1028,12 @@ static PyMethodDef module_methods[] = {
"'signum' registered by register()")},
#endif
- {"_read_null", faulthandler_read_null, METH_VARARGS,
- PyDoc_STR("_read_null(release_gil=False): read from NULL, raise "
+ {"_read_null", faulthandler_read_null, METH_NOARGS,
+ PyDoc_STR("_read_null(): read from NULL, raise "
"a SIGSEGV or SIGBUS signal depending on the platform")},
{"_sigsegv", faulthandler_sigsegv, METH_VARARGS,
- PyDoc_STR("_sigsegv(): raise a SIGSEGV signal")},
- {"_sigabrt", faulthandler_sigabrt, METH_VARARGS,
+ PyDoc_STR("_sigsegv(release_gil=False): raise a SIGSEGV signal")},
+ {"_sigabrt", faulthandler_sigabrt, METH_NOARGS,
PyDoc_STR("_sigabrt(): raise a SIGABRT signal")},
{"_sigfpe", (PyCFunction)faulthandler_sigfpe, METH_NOARGS,
PyDoc_STR("_sigfpe(): raise a SIGFPE signal")},