Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Segfault/abort in_Py_uop_sym_new_const on a JIT build #135608

Closed
Assignees
Fidget-Spinner
Labels
3.14bugs and security fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)topic-JITtype-crashA hard crash of the interpreter, possibly with a core dump
@devdanzin

Description

@devdanzin

Crash report

What happened?

It's possible to segfault a release build or abort a debug with JIT enabled by running the following MRE:

importemail# Any module seems to work, originally this was `sys`definteract():email.ps1=Noneprompt=email.ps1delemail.ps1for_inrange(5000):interact()

Segfault backtrace:

Program received signal SIGSEGV, Segmentation fault._Py_uop_sym_new_const (ctx=ctx@entry=0x7ffffffe0d20, const_val=0x0) at Python/optimizer_symbols.c:426426         _Py_uop_sym_set_const(ctx, res, const_val);#0  _Py_uop_sym_new_const (ctx=ctx@entry=0x7ffffffe0d20, const_val=0x0) at Python/optimizer_symbols.c:426#1  0x000055555584a183 in optimize_uops (co=0x7ffff7a50270, trace=trace@entry=0x7fffffff8a30, trace_len=trace_len@entry=73,    curr_stacklen=curr_stacklen@entry=2, dependencies=dependencies@entry=0x7fffffff8990) at Python/optimizer_cases.c.h:1265#2  0x000055555584aaba in _Py_uop_analyze_and_optimize (frame=frame@entry=0x7ffff7fb0020, buffer=buffer@entry=0x7fffffff8a30,    length=length@entry=73, curr_stacklen=curr_stacklen@entry=2, dependencies=dependencies@entry=0x7fffffff8990) at Python/optimizer_analysis.c:682#3  0x000055555584424b in uop_optimize (frame=frame@entry=0x7ffff7fb0020, instr=instr@entry=0x7ffff7a3a994,    exec_ptr=exec_ptr@entry=0x7fffffffd690, curr_stackentries=<optimized out>, progress_needed=progress_needed@entry=true)    at Python/optimizer.c:1282#4  0x0000555555844bec in _PyOptimizer_Optimize (frame=frame@entry=0x7ffff7fb0020, start=0x7ffff7a3a994,    executor_ptr=executor_ptr@entry=0x7fffffffd690, chain_depth=chain_depth@entry=0) at Python/optimizer.c:130#5  0x00005555555e9645 in _PyEval_EvalFrameDefault (tstate=0x555555b77f70 <_PyRuntime+315216>, frame=<optimized out>, throwflag=<optimized out>)    at Python/generated_cases.c.h:7792#6  0x00005555557bc6f7 in _PyEval_EvalFrame (throwflag=0, frame=0x7ffff7fb0020, tstate=0x555555b77f70 <_PyRuntime+315216>)    at ./Include/internal/pycore_ceval.h:119#7  _PyEval_Vector (args=0x0, argcount=0, kwnames=0x0, locals=0x7ffff7a13d40, func=0x7ffff7a0f3d0, tstate=0x555555b77f70 <_PyRuntime+315216>)    at Python/ceval.c:1975

Abort backtrace:

python: Python/optimizer_symbols.c:421: _Py_uop_sym_new_const: Assertion`const_val!= NULL' failed.Program received signal SIGABRT, Aborted.__pthread_kill_implementation (no_tid=0, signo=6, threadid=140737350575936) at ./nptl/pthread_kill.c:44#0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=140737350575936) at ./nptl/pthread_kill.c:44#1  __pthread_kill_internal (signo=6, threadid=140737350575936) at ./nptl/pthread_kill.c:78#2  __GI___pthread_kill (threadid=140737350575936, signo=signo@entry=6) at ./nptl/pthread_kill.c:89#3  0x00007ffff7cdf476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26#4  0x00007ffff7cc57f3 in __GI_abort () at ./stdlib/abort.c:79#5  0x00007ffff7cc571b in __assert_fail_base (fmt=0x7ffff7e7a130 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",    assertion=0x555555b5267c"const_val!= NULL", file=0x555555b52648"Python/optimizer_symbols.c", line=421, function=<optimized out>)    at ./assert/assert.c:94#6  0x00007ffff7cd6e96 in __GI___assert_fail (assertion=assertion@entry=0x555555b5267c"const_val!= NULL",    file=file@entry=0x555555b52648"Python/optimizer_symbols.c", line=line@entry=421,    function=function@entry=0x555555b52de0 <__PRETTY_FUNCTION__.7>"_Py_uop_sym_new_const") at ./assert/assert.c:103#7  0x000055555595b2dc in _Py_uop_sym_new_const (ctx=ctx@entry=0x7ffffffc4790, const_val=<optimized out>) at Python/optimizer_symbols.c:421#8  0x0000555555956e33 in optimize_uops (co=0x7ffff7b93940, trace=trace@entry=0x7fffffff3e00, trace_len=trace_len@entry=73,    curr_stacklen=curr_stacklen@entry=2, dependencies=dependencies@entry=0x7fffffff3de0) at Python/optimizer_cases.c.h:1265#9  0x000055555595a424 in _Py_uop_analyze_and_optimize (frame=frame@entry=0x7ffff7fb0020, buffer=buffer@entry=0x7fffffff3e00,    length=length@entry=73, curr_stacklen=curr_stacklen@entry=2, dependencies=dependencies@entry=0x7fffffff3de0)    at ./Include/internal/pycore_interpframe.h:24#10 0x0000555555951cd5 in uop_optimize (frame=frame@entry=0x7ffff7fb0020, instr=instr@entry=0x7ffff7a7e744,    exec_ptr=exec_ptr@entry=0x7fffffffd550, curr_stackentries=2, progress_needed=progress_needed@entry=true) at Python/optimizer.c:1282#11 0x0000555555952253 in _PyOptimizer_Optimize (frame=frame@entry=0x7ffff7fb0020, start=start@entry=0x7ffff7a7e744,    executor_ptr=executor_ptr@entry=0x7fffffffd550, chain_depth=chain_depth@entry=0) at Python/optimizer.c:130#12 0x0000555555863072 in _PyEval_EvalFrameDefault (tstate=tstate@entry=0x555555d6f7c0 <_PyRuntime+331232>, frame=frame@entry=0x7ffff7fb0020,    throwflag=throwflag@entry=0) at Python/generated_cases.c.h:7792#13 0x0000555555877340 in _PyEval_EvalFrame (throwflag=0, frame=0x7ffff7fb0020, tstate=0x555555d6f7c0 <_PyRuntime+331232>)    at ./Include/internal/pycore_ceval.h:119#14 _PyEval_Vector (tstate=tstate@entry=0x555555d6f7c0 <_PyRuntime+331232>, func=func@entry=0x7ffff7a4a750, locals=locals@entry=0x7ffff7a5c110,    args=args@entry=0x0, argcount=argcount@entry=0, kwnames=kwnames@entry=0x0) at Python/ceval.c:1975#15 0x000055555587743f in PyEval_EvalCode (co=co@entry=0x7ffff7a7e640, globals=globals@entry=0x7ffff7a5c110, locals=locals@entry=0x7ffff7a5c110)    at Python/ceval.c:866

Output fromPYTHON_LLTRACE=2:

Optimizing <module> (/home/fusil/runs/python-555/code-cpu_load-assertion/source2.py:1) at byte offset 52   1 ADD_TO_TRACE: _START_EXECUTOR (0, target=26, operand0=0x7ffff7a7e744, operand1=0)   2 ADD_TO_TRACE: _MAKE_WARM (0, target=0, operand0=0, operand1=0)26: JUMP_BACKWARD_JIT(12)   3 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=26, operand0=0, operand1=0)   4 ADD_TO_TRACE: _SET_IP (0, target=26, operand0=0x7ffff7a7e744, operand1=0)   5 ADD_TO_TRACE: _CHECK_PERIODIC (0, target=26, operand0=0, operand1=0, error_target=0)16: FOR_ITER_RANGE(10)   6 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=16, operand0=0, operand1=0)   7 ADD_TO_TRACE: _SET_IP (0, target=16, operand0=0x7ffff7a7e730, operand1=0)   8 ADD_TO_TRACE: _ITER_CHECK_RANGE (10, target=16, operand0=0, operand1=0)   9 ADD_TO_TRACE: _GUARD_NOT_EXHAUSTED_RANGE (10, target=16, operand0=0, operand1=0)  10 ADD_TO_TRACE: _ITER_NEXT_RANGE (10, target=16, operand0=0, operand1=0, error_target=0)18: STORE_NAME(3)  11 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=18, operand0=0, operand1=0)  12 ADD_TO_TRACE: _SET_IP (0, target=18, operand0=0x7ffff7a7e734, operand1=0)  13 ADD_TO_TRACE: _STORE_NAME (3, target=18, operand0=0, operand1=0, error_target=0)19: LOAD_NAME(1)  14 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=19, operand0=0, operand1=0)  15 ADD_TO_TRACE: _SET_IP (0, target=19, operand0=0x7ffff7a7e736, operand1=0)  16 ADD_TO_TRACE: _LOAD_NAME (1, target=19, operand0=0, operand1=0, error_target=0)20: PUSH_NULL(0)  17 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=20, operand0=0, operand1=0)  18 ADD_TO_TRACE: _SET_IP (0, target=20, operand0=0x7ffff7a7e738, operand1=0)  19 ADD_TO_TRACE: _PUSH_NULL (0, target=20, operand0=0, operand1=0)21: CALL_PY_EXACT_ARGS(0)  20 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=21, operand0=0, operand1=0)  21 ADD_TO_TRACE: _SET_IP (0, target=21, operand0=0x7ffff7a7e73a, operand1=0)  22 ADD_TO_TRACE: _CHECK_PEP_523 (0, target=21, operand0=0, operand1=0)  23 ADD_TO_TRACE: _CHECK_FUNCTION_VERSION (0, target=21, operand0=0x2cb, operand1=0)  24 ADD_TO_TRACE: _CHECK_FUNCTION_EXACT_ARGS (0, target=21, operand0=0, operand1=0)  25 ADD_TO_TRACE: _CHECK_STACK_SPACE (0, target=21, operand0=0, operand1=0)  26 ADD_TO_TRACE: _CHECK_RECURSION_REMAINING (0, target=21, operand0=0, operand1=0)  27 ADD_TO_TRACE: _INIT_CALL_PY_EXACT_ARGS (0, target=21, operand0=0, operand1=0)  28 ADD_TO_TRACE: _SAVE_RETURN_OFFSET (4, target=21, operand0=0, operand1=0)Function: version=0x2cb; new_func=0x7ffff7a4a8d0, new_code=0x7ffff7b93940  29 ADD_TO_TRACE: _PUSH_FRAME (0, target=21, operand0=0x7ffff7a4a8d0, operand1=0)Continuing in interact (/home/fusil/runs/python-555/code-cpu_load-assertion/source2.py:3) at byte offset 00: RESUME_CHECK(0)  30 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=0, operand0=0, operand1=0)  31 ADD_TO_TRACE: _SET_IP (0, target=0, operand0=0x7ffff7b93a10, operand1=0)  32 ADD_TO_TRACE: _RESUME_CHECK (0, target=0, operand0=0, operand1=0)1: LOAD_CONST(0)  33 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=1, operand0=0, operand1=0)  34 ADD_TO_TRACE: _SET_IP (0, target=1, operand0=0x7ffff7b93a12, operand1=0)  35 ADD_TO_TRACE: _LOAD_CONST (0, target=1, operand0=0, operand1=0)2: LOAD_GLOBAL_MODULE(0)  36 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=2, operand0=0, operand1=0)  37 ADD_TO_TRACE: _SET_IP (0, target=2, operand0=0x7ffff7b93a14, operand1=0)  38 ADD_TO_TRACE: _NOP (0, target=2, operand0=0, operand1=0)  39 ADD_TO_TRACE: _LOAD_GLOBAL_MODULE (0, target=2, operand0=0x2c, operand1=0)  40 ADD_TO_TRACE: _PUSH_NULL_CONDITIONAL (0, target=2, operand0=0, operand1=0)7: STORE_ATTR(1)  41 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=7, operand0=0, operand1=0)  42 ADD_TO_TRACE: _SET_IP (0, target=7, operand0=0x7ffff7b93a1e, operand1=0)  43 ADD_TO_TRACE: _STORE_ATTR (1, target=7, operand0=0, operand1=0, error_target=0)12: LOAD_GLOBAL_MODULE(0)  44 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=12, operand0=0, operand1=0)  45 ADD_TO_TRACE: _SET_IP (0, target=12, operand0=0x7ffff7b93a28, operand1=0)  46 ADD_TO_TRACE: _NOP (0, target=12, operand0=0, operand1=0)  47 ADD_TO_TRACE: _LOAD_GLOBAL_MODULE (0, target=12, operand0=0x2c, operand1=0)  48 ADD_TO_TRACE: _PUSH_NULL_CONDITIONAL (0, target=12, operand0=0, operand1=0)17: LOAD_ATTR_MODULE(2)  49 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=17, operand0=0, operand1=0)  50 ADD_TO_TRACE: _SET_IP (0, target=17, operand0=0x7ffff7b93a32, operand1=0)  51 ADD_TO_TRACE: _LOAD_ATTR_MODULE (2, target=17, operand0=0x2e, operand1=0)  52 ADD_TO_TRACE: _PUSH_NULL_CONDITIONAL (2, target=17, operand0=0, operand1=0)27: STORE_FAST(0)  53 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=27, operand0=0, operand1=0)  54 ADD_TO_TRACE: _SET_IP (0, target=27, operand0=0x7ffff7b93a46, operand1=0)  55 ADD_TO_TRACE: _STORE_FAST (0, target=27, operand0=0, operand1=0)28: LOAD_GLOBAL_MODULE(0)  56 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=28, operand0=0, operand1=0)  57 ADD_TO_TRACE: _SET_IP (0, target=28, operand0=0x7ffff7b93a48, operand1=0)  58 ADD_TO_TRACE: _NOP (0, target=28, operand0=0, operand1=0)  59 ADD_TO_TRACE: _LOAD_GLOBAL_MODULE (0, target=28, operand0=0x2c, operand1=0)  60 ADD_TO_TRACE: _PUSH_NULL_CONDITIONAL (0, target=28, operand0=0, operand1=0)33: DELETE_ATTR(1)  61 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=33, operand0=0, operand1=0)  62 ADD_TO_TRACE: _SET_IP (0, target=33, operand0=0x7ffff7b93a52, operand1=0)  63 ADD_TO_TRACE: _DELETE_ATTR (1, target=33, operand0=0, operand1=0, error_target=0)34: LOAD_CONST(0)  64 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=34, operand0=0, operand1=0)  65 ADD_TO_TRACE: _SET_IP (0, target=34, operand0=0x7ffff7b93a54, operand1=0)  66 ADD_TO_TRACE: _LOAD_CONST (0, target=34, operand0=0, operand1=0)35: RETURN_VALUE(0)  67 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=35, operand0=0, operand1=0)  68 ADD_TO_TRACE: _SET_IP (0, target=35, operand0=0x7ffff7b93a56, operand1=0)  69 ADD_TO_TRACE: _RETURN_VALUE (0, target=35, operand0=0x7ffff7a4a750, operand1=0)Returning to <module> (/home/fusil/runs/python-555/code-cpu_load-assertion/source2.py:1) at byte offset 5025: POP_TOP(0)  70 ADD_TO_TRACE: _CHECK_VALIDITY (0, target=25, operand0=0, operand1=0)  71 ADD_TO_TRACE: _SET_IP (0, target=25, operand0=0x7ffff7a7e742, operand1=0)  72 ADD_TO_TRACE: _POP_TOP (0, target=25, operand0=0, operand1=0)  73 ADD_TO_TRACE: _JUMP_TO_TOP (0, target=0, operand0=0, operand1=0)Created a proto-trace for <module> (/home/fusil/runs/python-555/code-cpu_load-assertion/source2.py:1) at byte offset 52 -- length 73

Output fromPYTHON_OPT_DEBUG=4

   0 abs: _START_EXECUTOR (0, target=26, operand0=0x7f167283ad34, operand1=0)  stack_level 2   1 abs: _MAKE_WARM (0, target=0, operand0=0, operand1=0)  stack_level 2   2 abs: _CHECK_VALIDITY (0, target=26, operand0=0, operand1=0)  stack_level 2   3 abs: _SET_IP (0, target=26, operand0=0x7f167283ad34, operand1=0)  stack_level 2   4 abs: _CHECK_PERIODIC (0, target=26, operand0=0, operand1=0, error_target=0)  stack_level 2   5 abs: _CHECK_VALIDITY (0, target=16, operand0=0, operand1=0)  stack_level 2   6 abs: _SET_IP (0, target=16, operand0=0x7f167283ad20, operand1=0)  stack_level 2   7 abs: _ITER_CHECK_RANGE (10, target=16, operand0=0, operand1=0)  stack_level 2   8 abs: _GUARD_NOT_EXHAUSTED_RANGE (10, target=16, operand0=0, operand1=0)  stack_level 2   9 abs: _ITER_NEXT_RANGE (10, target=16, operand0=0, operand1=0, error_target=0)  stack_level 3  10 abs: _CHECK_VALIDITY (0, target=18, operand0=0, operand1=0)  stack_level 3  11 abs: _SET_IP (0, target=18, operand0=0x7f167283ad24, operand1=0)  stack_level 3  12 abs: _STORE_NAME (3, target=18, operand0=0, operand1=0, error_target=0)  stack_level 2  13 abs: _CHECK_VALIDITY (0, target=19, operand0=0, operand1=0)  stack_level 2  14 abs: _SET_IP (0, target=19, operand0=0x7f167283ad26, operand1=0)  stack_level 2  15 abs: _LOAD_NAME (1, target=19, operand0=0, operand1=0, error_target=0)  stack_level 3  16 abs: _CHECK_VALIDITY (0, target=20, operand0=0, operand1=0)  stack_level 3  17 abs: _SET_IP (0, target=20, operand0=0x7f167283ad28, operand1=0)  stack_level 3  18 abs: _PUSH_NULL (0, target=20, operand0=0, operand1=0)  stack_level 4  19 abs: _CHECK_VALIDITY (0, target=21, operand0=0, operand1=0)  stack_level 4  20 abs: _SET_IP (0, target=21, operand0=0x7f167283ad2a, operand1=0)  stack_level 4  21 abs: _CHECK_PEP_523 (0, target=21, operand0=0, operand1=0)  stack_level 4  22 abs: _CHECK_FUNCTION_VERSION (0, target=21, operand0=0x760, operand1=0)  stack_level 4  23 abs: _CHECK_FUNCTION_EXACT_ARGS (0, target=21, operand0=0, operand1=0)  stack_level 4  24 abs: _CHECK_STACK_SPACE (0, target=21, operand0=0, operand1=0x7ffda9a1bf20)  stack_level 4  25 abs: _CHECK_RECURSION_REMAINING (0, target=21, operand0=0, operand1=0x56468d06ff63)  stack_level 4  26 abs: _INIT_CALL_PY_EXACT_ARGS (0, target=21, operand0=0, operand1=0x3c) func=0x7f16728068d0 code=0x7f1672953940  stack_level 3  27 abs: _SAVE_RETURN_OFFSET (4, target=21, operand0=0, operand1=0x56468d081cef)  stack_level 3  28 abs: _PUSH_FRAME (0, target=21, operand0=0x7f16728068d0, operand1=0x56468d620878)  stack_level 0  29 abs: _CHECK_VALIDITY (0, target=0, operand0=0, operand1=0x56468cff61e1)  stack_level 0  30 abs: _SET_IP (0, target=0, operand0=0x7f1672953a10, operand1=0)  stack_level 0  31 abs: _RESUME_CHECK (0, target=0, operand0=0, operand1=0)  stack_level 0  32 abs: _CHECK_VALIDITY (0, target=1, operand0=0, operand1=0)  stack_level 0  33 abs: _SET_IP (0, target=1, operand0=0x7f1672953a12, operand1=0)  stack_level 0  34 abs: _LOAD_CONST (0, target=1, operand0=0, operand1=0)  stack_level 1  35 abs: _CHECK_VALIDITY (0, target=2, operand0=0, operand1=0)  stack_level 1  36 abs: _SET_IP (0, target=2, operand0=0x7f1672953a14, operand1=0)  stack_level 1  37 abs: _CHECK_FUNCTION (0, target=2, operand0=0x760, operand1=0)  stack_level 1  38 abs: _LOAD_CONST_INLINE (0, target=2, operand0=0x7f1672884bf0, operand1=0x8)  stack_level 2  39 abs: _PUSH_NULL_CONDITIONAL (0, target=2, operand0=0, operand1=0)  stack_level 2  40 abs: _CHECK_VALIDITY (0, target=7, operand0=0, operand1=0)  stack_level 2  41 abs: _SET_IP (0, target=7, operand0=0x7f1672953a1e, operand1=0)  stack_level 2  42 abs: _STORE_ATTR (1, target=7, operand0=0, operand1=0, error_target=0)  stack_level 0  43 abs: _CHECK_VALIDITY (0, target=12, operand0=0, operand1=0)  stack_level 0  44 abs: _SET_IP (0, target=12, operand0=0x7f1672953a28, operand1=0)  stack_level 0  45 abs: _NOP (0, target=12, operand0=0, operand1=0)  stack_level 0  46 abs: _LOAD_CONST_INLINE (0, target=12, operand0=0x7f1672884bf0, operand1=0x8)  stack_level 1  47 abs: _PUSH_NULL_CONDITIONAL (0, target=12, operand0=0, operand1=0)  stack_level 1  48 abs: _CHECK_VALIDITY (0, target=17, operand0=0, operand1=0)  stack_level 1  49 abs: _SET_IP (0, target=17, operand0=0x7f1672953a32, operand1=0)  stack_level 1

Please let me know whether PYTHON_LLTRACE output is useful in JIT issues. Any suggestions about format or content also very welcome :)

Found usingfusil by@vstinner.

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux

Output from running 'python -VV' on the command line:

Python 3.15.0a0 (heads/main:b706ff003c5, Jun 17 2025, 06:07:17) [GCC 11.4.0]

Linked PRs

Metadata

Metadata

Labels

3.14bugs and security fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)topic-JITtype-crashA hard crash of the interpreter, possibly with a core dump

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions


    [8]ページ先頭

    ©2009-2025 Movatter.jp