This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author skip.montanaro
Recipients skip.montanaro
Date 2015-05-28.17:01:01
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1432832461.97.0.279218434752.issue24319@psf.upfronthosting.co.za>
In-reply-to
Content
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 <module>
    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 <module>
    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
History
Date User Action Args
2015-05-28 17:01:02skip.montanarosetrecipients: + skip.montanaro
2015-05-28 17:01:01skip.montanarosetmessageid: <1432832461.97.0.279218434752.issue24319@psf.upfronthosting.co.za>
2015-05-28 17:01:01skip.montanarolinkissue24319 messages
2015-05-28 17:01:01skip.montanarocreate