summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2016-03-15 16:24:13 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2016-03-15 16:24:13 (GMT)
commitb380010782959bd2d483320ea237ed3b8dd3d4f7 (patch)
tree424eafd4e1be710e5d12af298dd57154b673adad
parent7105e9f3de801ce50e24fcdfbdd450858e28a0fd (diff)
parent57003f81ead9ff38150c1e4821811c66c296d33c (diff)
downloadcpython-b380010782959bd2d483320ea237ed3b8dd3d4f7.zip
cpython-b380010782959bd2d483320ea237ed3b8dd3d4f7.tar.gz
cpython-b380010782959bd2d483320ea237ed3b8dd3d4f7.tar.bz2
Merge 3.5 (test_faulthandler)
-rw-r--r--Lib/test/test_faulthandler.py8
-rw-r--r--Modules/faulthandler.c12
2 files changed, 18 insertions, 2 deletions
diff --git a/Lib/test/test_faulthandler.py b/Lib/test/test_faulthandler.py
index 0d86cb5..12969d5 100644
--- a/Lib/test/test_faulthandler.py
+++ b/Lib/test/test_faulthandler.py
@@ -185,6 +185,14 @@ class FaultHandlerTests(unittest.TestCase):
2,
'xyz')
+ def test_fatal_error_without_gil(self):
+ self.check_fatal_error("""
+ import faulthandler
+ faulthandler._fatal_error(b'xyz', True)
+ """,
+ 2,
+ 'xyz')
+
@unittest.skipIf(sys.platform.startswith('openbsd') and HAVE_THREADS,
"Issue #12868: sigaltstack() doesn't work on "
"OpenBSD if Python is compiled with pthread")
diff --git a/Modules/faulthandler.c b/Modules/faulthandler.c
index 14384b5..45c9fcb 100644
--- a/Modules/faulthandler.c
+++ b/Modules/faulthandler.c
@@ -935,10 +935,18 @@ static PyObject *
faulthandler_fatal_error_py(PyObject *self, PyObject *args)
{
char *message;
- if (!PyArg_ParseTuple(args, "y:fatal_error", &message))
+ int release_gil = 0;
+ if (!PyArg_ParseTuple(args, "y|i:fatal_error", &message, &release_gil))
return NULL;
faulthandler_suppress_crash_report();
- Py_FatalError(message);
+ if (release_gil) {
+ Py_BEGIN_ALLOW_THREADS
+ Py_FatalError(message);
+ Py_END_ALLOW_THREADS
+ }
+ else {
+ Py_FatalError(message);
+ }
Py_RETURN_NONE;
}