Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Description
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 _pyreplUsing 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]