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

Main segfaults importing_pyrepl with low value forJUMP_BACKWARD_INITIAL_VALUE #137218

Closed
Assignees
savannahostrowski
Labels
buildThe build process and cross-buildinterpreter-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?

Edit: I'm seeing this crash even without patchingJUMP_BACKWARD_INITIAL_VALUE. Will try to figure out a MRE for unpatched crash.

If we#define JUMP_BACKWARD_INITIAL_VALUE 702 (or lower) inInclude/internal/pycore_backoff.h, a debug JIT build will segfault when trying to run to the new REPL. Can also be triggered by:

python -m _pyrepl

Using some other modules likerandom orhttp.server doesn't crash.

An even lower value like 344 will segfault earlier, during the build process.

This happens since#136307 landed in377b787.

The diff below, which is part of that commit, is enough to cause the segfault together with definingJUMP_BACKWARD_INITIAL_VALUE to 702 or lower:

diff --git a/Include/internal/pycore_global_objects_fini_generated.h b/Include/internal/pycore_global_objects_fini_generated.hindex 493377b4c25..5e7dda3a371 100644--- a/Include/internal/pycore_global_objects_fini_generated.h+++ b/Include/internal/pycore_global_objects_fini_generated.h@@ -1005,6 +1005,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {     _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(imag));     _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(importlib));     _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(in_fd));+    _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(include_aliases));     _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(incoming));     _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(index));     _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(indexgroup));diff --git a/Include/internal/pycore_global_strings.h b/Include/internal/pycore_global_strings.hindex 5dfea2f479d..6908cbf78f3 100644--- a/Include/internal/pycore_global_strings.h+++ b/Include/internal/pycore_global_strings.h@@ -496,6 +496,7 @@ struct _Py_global_strings {         STRUCT_FOR_ID(imag)         STRUCT_FOR_ID(importlib)         STRUCT_FOR_ID(in_fd)+        STRUCT_FOR_ID(include_aliases)         STRUCT_FOR_ID(incoming)         STRUCT_FOR_ID(index)         STRUCT_FOR_ID(indexgroup)diff --git a/Include/internal/pycore_runtime_init_generated.h b/Include/internal/pycore_runtime_init_generated.hindex 85ced09d29d..da2ed7422c9 100644--- a/Include/internal/pycore_runtime_init_generated.h+++ b/Include/internal/pycore_runtime_init_generated.h@@ -1003,6 +1003,7 @@ extern "C" {     INIT_ID(imag), \     INIT_ID(importlib), \     INIT_ID(in_fd), \+    INIT_ID(include_aliases), \     INIT_ID(incoming), \     INIT_ID(index), \     INIT_ID(indexgroup), \diff --git a/Include/internal/pycore_unicodeobject_generated.h b/Include/internal/pycore_unicodeobject_generated.hindex 6018d98d156..b1f411945e7 100644--- a/Include/internal/pycore_unicodeobject_generated.h+++ b/Include/internal/pycore_unicodeobject_generated.h@@ -1772,6 +1772,10 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) {     _PyUnicode_InternStatic(interp, &string);     assert(_PyUnicode_CheckConsistency(string, 1));     assert(PyUnicode_GET_LENGTH(string) != 1);+    string = &_Py_ID(include_aliases);+    _PyUnicode_InternStatic(interp, &string);+    assert(_PyUnicode_CheckConsistency(string, 1));+    assert(PyUnicode_GET_LENGTH(string) != 1);     string = &_Py_ID(incoming);     _PyUnicode_InternStatic(interp, &string);     assert(_PyUnicode_CheckConsistency(string, 1));

Backtrace:

Program received signal SIGSEGV, Segmentation fault._PyUnicode_Equal (str1=0x555555c88c18 <_PyRuntime+96088>, str2=0x555555c88c50 <_PyRuntime+96144>) at ./Include/object.h:815815         return ((flags & feature) != 0);#0  _PyUnicode_Equal (str1=0x555555c88c18 <_PyRuntime+96088>, str2=0x555555c88c50 <_PyRuntime+96144>) at ./Include/object.h:815#1  0x00007ffff731df15 in ?? ()#2  0x00007ffff764a751 in ?? ()#3  0x0000555555cc2230 in _PyRuntime ()#4  0x00007fffffffbfc0 in ?? ()#5  0x00007ffff7317017 in ?? ()#6  0x0000555556053f60 in ?? ()#7  0x00007ffff7e2a9c8 in ?? ()#8  0x00007ffff7317000 in ?? ()#9  0x00007ffff7e2a910 in ?? ()#10 0x0000555555cc2230 in _PyRuntime ()#11 0x00005555557cdcf9 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=0x58, throwflag=1291845632)    at Python/generated_cases.c.h:7796Backtrace stopped: previous frame inner to this frame (corrupt stack?)

Here's the output from runningPYTHON_LLTRACE=4 ./python -m _pyrepl:
lltrace_crash.txt
And here forPYTHON_OPT_DEBUG=4 ./python -m _pyrepl:
opt_debug_crash.txt

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-dirty:d7e12a362a2, Jul 29 2025, 18:24:07) [GCC 13.3.0]

Linked PRs

Metadata

Metadata

Labels

buildThe build process and cross-buildinterpreter-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