Issue 24319: Crash during "make coverage-report" (original) (raw)
While trying out some of the auxiliary make targets on an openSUSE 12.2 system, I got a segfault during the test phase of the coverage-report target. Several Python processes were running as part of the test when the crash occurred. The resulting crash causes the rest of the test process(es) to hang. Ctl-C is required to get back to a shell prompt.
Here's the traceback reported in the terminal window:
... File "/home/skipm/3rdParty/python/cpython/Lib/json/scanner.py", line 38 in _scan_once File "/home/skipm/3rdParty/python/cpython/Lib/json/decoder.py", line 185 in JSONObject File "/home/skipm/3rdParty/python/cpython/Lib/json/scanner.py", line 38 in _scan_once ... Traceback (most recent call last): File "/home/skipm/3rdParty/python/cpython/Lib/runpy.py", line 170, in _run_module_as_main "main", mod_spec) File "/home/skipm/3rdParty/python/cpython/Lib/runpy.py", line 85, in _run_code exec(code, run_globals) File "/home/skipm/3rdParty/python/cpython/Lib/test/main.py", line 3, in regrtest.main_in_temp_cwd() File "/home/skipm/3rdParty/python/cpython/Lib/test/regrtest.py", line 1560, in main_in_temp_cwd main() File "/home/skipm/3rdParty/python/cpython/Lib/test/regrtest.py", line 738, in main raise Exception("Child error on {}: {}".format(test, result[1])) Exception: Child error on test_json: Exit code -11 ^CException ignored in: <module 'threading' from '/home/skipm/3rdParty/python/cpython/Lib/threading.py'> Traceback (most recent call last): File "/home/skipm/3rdParty/python/cpython/Lib/threading.py", line 1297, in _shutdown t.join() File "/home/skipm/3rdParty/python/cpython/Lib/threading.py", line 1063, in join self._wait_for_tstate_lock() File "/home/skipm/3rdParty/python/cpython/Lib/threading.py", line 1079, in _wait_for_tstate_lock elif lock.acquire(block, timeout): KeyboardInterrupt make: *** [coverage-report] Interrupt
I noticed that while it crashes reproducibly, it's not always in the same place. Here's a traceback from a crash in test_exceptions.py:
... File "/home/skipm/3rdParty/python/cpython/Lib/test/test_exceptions.py", line 476 in f File "/home/skipm/3rdParty/python/cpython/Lib/test/test_exceptions.py", line 476 in f File "/home/skipm/3rdParty/python/cpython/Lib/test/test_exceptions.py", line 476 in f ... Traceback (most recent call last): File "/home/skipm/3rdParty/python/cpython/Lib/runpy.py", line 170, in _run_module_as_main "main", mod_spec) File "/home/skipm/3rdParty/python/cpython/Lib/runpy.py", line 85, in _run_code exec(code, run_globals) File "/home/skipm/3rdParty/python/cpython/Lib/test/main.py", line 3, in regrtest.main_in_temp_cwd() File "/home/skipm/3rdParty/python/cpython/Lib/test/regrtest.py", line 1560, in main_in_temp_cwd main() File "/home/skipm/3rdParty/python/cpython/Lib/test/regrtest.py", line 738, in main raise Exception("Child error on {}: {}".format(test, result[1])) Exception: Child error on test_exceptions: Exit code -11 ^CException ignored in: <module 'threading' from '/home/skipm/3rdParty/python/cpython/Lib/threading.py'> Traceback (most recent call last): File "/home/skipm/3rdParty/python/cpython/Lib/threading.py", line 1297, in _shutdown t.join() File "/home/skipm/3rdParty/python/cpython/Lib/threading.py", line 1063, in join self._wait_for_tstate_lock() File "/home/skipm/3rdParty/python/cpython/Lib/threading.py", line 1079, in _wait_for_tstate_lock elif lock.acquire(block, timeout): KeyboardInterrupt
I've attached the output of pgrep showing the Python processes which were left running. Here's the stack trace from the core file:
0
raise () from /lib64/libc.so.6
1
abort () from /lib64/libc.so.6
2
Py_FatalError (msg=0x775528 "Py_EndInterpreter: not the last thread") at Python/pylifecycle.c:1374
3
Py_EndInterpreter (tstate=0x25b41c0) at Python/pylifecycle.c:826
4
run_in_subinterp (self=0x7f9dd8b9d9a8, args=0x7f9dd8b92e80) at /home/skipm/3rdParty/python/cpython/Modules/_testcapimodule.c:2627
5
PyCFunction_Call (func=0x7f9dd8babd38, args=0x7f9dd8b92e80, kwds=0x0) at Objects/methodobject.c:109
6
call_function (pp_stack=0x7fffc68bda98, oparg=1) at Python/ceval.c:4653
7
PyEval_EvalFrameEx (f=0x260ae08, throwflag=0) at Python/ceval.c:3198
8
_PyEval_EvalCodeWithName (_co=0x7f9dd8c5bc00, globals=0x7f9dd8c9ffc8, locals=0x7f9dd8c9ffc8, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at Python/ceval.c:3964
9
PyEval_EvalCodeEx (_co=0x7f9dd8c5bc00, globals=0x7f9dd8c9ffc8, locals=0x7f9dd8c9ffc8, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, kwdefs=0x0, closure=0x0) at Python/ceval.c:3985 #10 PyEval_EvalCode (co=0x7f9dd8c5bc00, globals=0x7f9dd8c9ffc8, locals=0x7f9dd8c9ffc8) at Python/ceval.c:777 #11 run_mod (mod=0x264dfb8, filename=0x7f9dd8c67eb0, globals=0x7f9dd8c9ffc8, locals=0x7f9dd8c9ffc8, flags=0x7fffc68bfe80, arena=0x263e470) at Python/pythonrun.c:970 #12 PyRun_StringFlags (str=0x7f9dd8c5c050 "if 1:\n", ' ' <repeats 12 times>, "import _testcapi\n\n", ' ' <repeats 12 times>, "_testcapi.run_in_subinterp('if 1:\n", ' ' <repeats 12 times>, "import os\n", ' ' <repeats 12 times>, "import threading\n", ' ' <repeats 12 times>, "import time\n\n", ' ' <repeats 12 times>, "def f():\n", ' ' <repeats 15 times>..., start=257, globals=0x7f9dd8c9ffc8, locals=0x7f9dd8c9ffc8, flags=0x7fffc68bfe80) at Python/pythonrun.c:894 #13 PyRun_SimpleStringFlags (command=0x7f9dd8c5c050 "if 1:\n", ' ' <repeats 12 times>, "import _testcapi\n\n", ' ' <repeats 12 times>, "_testcapi.run_in_subinterp('if 1:\n", ' ' <repeats 12 times>, "import os\n", ' ' <repeats 12 times>, "import threading\n", ' ' <repeats 12 times>, "import time\n\n", ' ' <repeats 12 times>, "def f():\n", ' ' <repeats 15 times>..., flags=0x7fffc68bfe80) at Python/pythonrun.c:421 #14 run_command (command=0x259ecc0 L"if 1:\n", ' ' <repeats 12 times>, "import _testcapi\n\n", ' ' <repeats 12 times>, "_testcapi.run_in_subinterp('if 1:\n", ' ' <repeats 12 times>, "import os\n", ' ' <repeats 12 times>, "import threading\n", ' ' <repeats 12 times>, "import time\n\n", ' ' <repeats 12 times>, "def f():\n", ' ' <repeats 15 times>..., cf=0x7fffc68bfe80) at Modules/main.c:279 #15 Py_Main (argc=6, argv=0x259e010) at Modules/main.c:706 #16 main (argc=6, argv=0x7fffc68c0098) at ./Programs/python.c:69