Commit d5698cbb authored by Victor Stinner's avatar Victor Stinner

Fix initialization of the faulthandler module

faulthandler requires the importlib if "-X faulthandler" option is present on
the command line, so initialize faulthandler after importlib.

Add also an unit test.
parent 60622ed1
......@@ -7,6 +7,7 @@ import signal
import subprocess
import sys
from test import support, script_helper
from test.script_helper import assert_python_ok
import tempfile
import unittest
......@@ -256,6 +257,20 @@ faulthandler._read_null()
finally:
sys.stderr = orig_stderr
def test_disabled_by_default(self):
# By default, the module should be disabled
code = "import faulthandler; print(faulthandler.is_enabled())"
rc, stdout, stderr = assert_python_ok("-c", code)
stdout = (stdout + stderr).strip()
self.assertEqual(stdout, b"False")
def test_sys_xoptions(self):
# Test python -X faulthandler
code = "import faulthandler; print(faulthandler.is_enabled())"
rc, stdout, stderr = assert_python_ok("-X", "faulthandler", "-c", code)
stdout = (stdout + stderr).strip()
self.assertEqual(stdout, b"True")
def check_dump_traceback(self, filename):
"""
Explicitly call dump_traceback() function and check its output.
......
......@@ -356,10 +356,6 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib)
_PyImportHooks_Init();
/* initialize the faulthandler module */
if (_PyFaulthandler_Init())
Py_FatalError("Py_Initialize: can't initialize faulthandler");
/* Initialize _warnings. */
_PyWarnings_Init();
......@@ -368,6 +364,10 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib)
import_init(interp, sysmod);
/* initialize the faulthandler module */
if (_PyFaulthandler_Init())
Py_FatalError("Py_Initialize: can't initialize faulthandler");
_PyTime_Init();
if (initfsencoding(interp) < 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment