Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
57003f81
Commit
57003f81
authored
8 years ago
by
Victor Stinner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
faulthandler: Test Py_FatalError() with GIL released
Issue #26558.
parent
4ddee7f5
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
2 deletions
+18
-2
Lib/test/test_faulthandler.py
Lib/test/test_faulthandler.py
+8
-0
Modules/faulthandler.c
Modules/faulthandler.c
+10
-2
No files found.
Lib/test/test_faulthandler.py
View file @
57003f81
...
@@ -185,6 +185,14 @@ class FaultHandlerTests(unittest.TestCase):
...
@@ -185,6 +185,14 @@ class FaultHandlerTests(unittest.TestCase):
2
,
2
,
'xyz'
)
'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
,
@
unittest
.
skipIf
(
sys
.
platform
.
startswith
(
'openbsd'
)
and
HAVE_THREADS
,
"Issue #12868: sigaltstack() doesn't work on "
"Issue #12868: sigaltstack() doesn't work on "
"OpenBSD if Python is compiled with pthread"
)
"OpenBSD if Python is compiled with pthread"
)
...
...
This diff is collapsed.
Click to expand it.
Modules/faulthandler.c
View file @
57003f81
...
@@ -935,10 +935,18 @@ static PyObject *
...
@@ -935,10 +935,18 @@ static PyObject *
faulthandler_fatal_error_py
(
PyObject
*
self
,
PyObject
*
args
)
faulthandler_fatal_error_py
(
PyObject
*
self
,
PyObject
*
args
)
{
{
char
*
message
;
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
;
return
NULL
;
faulthandler_suppress_crash_report
();
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
;
Py_RETURN_NONE
;
}
}
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment