Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 33.9k
Closed
Labels
3.14bugs and security fixesbugs and security fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)topic-JITtype-crashA hard crash of the interpreter, possibly with a core dumpA hard crash of the interpreter, possibly with a core dump
Description
Crash report
When running:
PYTHON_UOPS_OPTIMIZE=0 PYTHON_LLTRACE=1 ./python -m test test_multiprocessing_fork.test_processes -m test_free_from_gc On a debug build, we get an assertion failure:
Using random seed: 2033438694 0:00:00 load avg: 1.57 Run 1 test sequentially in a single process 0:00:00 load avg: 1.57 [1/1] test_multiprocessing_fork.test_processes Created a proto-trace for _path_join (<frozen importlib._bootstrap_external>:131) at byte offset 110 -- length 29 Created a proto-trace for _path_join (<frozen importlib._bootstrap_external>:131) at byte offset 116 -- length 13 Created a proto-trace for Heap._free_pending_blocks (/home/brandtbucher/cpython/Lib/multiprocessing/heap.py:258) at byte offset 126 -- length 482 Created a proto-trace for _TestHeap.test_free_from_gc (/home/brandtbucher/cpython/Lib/test/_test_multiprocessing.py:4114) at byte offset 486 -- length 27 Created a proto-trace for BufferWrapper.__init__ (/home/brandtbucher/cpython/Lib/multiprocessing/heap.py:326) at byte offset 0 -- length 516 python: Python/optimizer.c:1277: uop_optimize: Assertion `length <= UOP_MAX_TRACE_LENGTH' failed. Fatal Python error: Aborted Current thread 0x00007f6a0dc56740 (most recent call first): File "/home/brandtbucher/cpython/Lib/multiprocessing/heap.py", line 326 in __init__ File "__init__", line ??? in __init__ File "/home/brandtbucher/cpython/Lib/test/_test_multiprocessing.py", line 4130 in test_free_from_gc File "/home/brandtbucher/cpython/Lib/unittest/case.py", line 606 in _callTestMethod File "/home/brandtbucher/cpython/Lib/unittest/case.py", line 660 in run Fatal Python error: Segmentation fault Segmentation fault (core dumped) On a non-debug build, we get a buffer overflow:
Using random seed: 1659198442 0:00:00 load avg: 13.83 Run 1 test sequentially in a single process 0:00:00 load avg: 13.83 [1/1] test_multiprocessing_fork.test_processes *** stack smashing detected ***: terminated Fatal Python error: Aborted Current thread 0x00007f11f9a27740 (most recent call first): File "/home/brandtbucher/cpython/Lib/multiprocessing/heap.py", line 326 in __init__ File "__init__", line ??? in __init__ File "/home/brandtbucher/cpython/Lib/test/_test_multiprocessing.py", line 4130 in test_free_from_gc File "/home/brandtbucher/cpython/Lib/unittest/case.py", line 606 in _callTestMethod File "/home/brandtbucher/cpython/Lib/unittest/case.py", line 660 in run File Fatal Python error: Segmentation fault Segmentation fault (core dumped) It looks like the optimizer just happens to do enough useful work that adding error and exit stubs doesn't put us over UOP_MAX_TRACE_LENGTH anymore. My hunch is that the real bug is in translate_bytecode_to_trace, where we're not reserving enough space for some instruction(s).
CC @Fidget-Spinner and @markshannon.
Metadata
Metadata
Assignees
Labels
3.14bugs and security fixesbugs and security fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)topic-JITtype-crashA hard crash of the interpreter, possibly with a core dumpA hard crash of the interpreter, possibly with a core dump