cpython/Python
Pablo Galindo Salgado 65fbec64f6
[3.15] gh-151613: Fix remote debugging frame cache ABA (#152448)
gh-151613: Fix remote debugging frame cache ABA (#151614)

The remote debugging frame cache previously used only the last_profiled_frame address as its cache anchor. If a frame returned and a later frame reused the same _PyInterpreterFrame address, the profiler could accept a stale cache entry and splice parent frames from a different call chain into the current stack.

This adds a last_profiled_frame_seq counter next to last_profiled_frame, increments it when the anchor advances, stores it in frame cache entries, and validates cache hits against both the frame address and the sequence. Cache miss walks now copy stack chunks before storing new cache entries so stored continuations come from a stable snapshot. The new regression test exercises alternating call chains and checks that cached stacks never contain frames from both branches.

(cherry picked from commit 8cda6ae2f1)
2026-06-27 17:42:31 +00:00
..
clinic [3.15] gh-149321: Remove lazy_imports=none startup mode (GH-149389) (#150129) 2026-06-08 22:55:57 +00:00
frozen_modules gh-97669: Create Tools/build/ directory (#97963) 2022-10-17 12:01:00 +02:00
_contextvars.c gh-128341: Use _Py_ABI_SLOT in stdlib modules (#145770) 2026-03-24 17:47:55 +00:00
_warnings.c gh-143231: Add the module attribute to warnings.WarningMessage (GH-149298) 2026-05-03 09:35:47 +00:00
asdl.c bpo-43244: Remove ast.h, asdl.h, Python-ast.h headers (GH-24933) 2021-03-23 20:47:40 +01:00
asm_trampoline.S [3.15] gh-139808: Add branch protections for aarch64 in asm_trampoline.S (GH-130864) (#149730) 2026-05-12 22:10:24 +02:00
asm_trampoline_aarch64.h [3.15] gh-139808: Add branch protections for aarch64 in asm_trampoline.S (GH-130864) (#149730) 2026-05-12 22:10:24 +02:00
assemble.c [3.15] gh-151112: Fix double free in assemble_init when out of memory (GH-151142) (#151205) 2026-06-09 20:16:42 +00:00
ast.c gh-143055: Implementation of PEP 798 (#143056) 2026-01-30 20:37:52 -08:00
ast_preprocess.c gh-143055: Implementation of PEP 798 (#143056) 2026-01-30 20:37:52 -08:00
ast_unparse.c gh-143055: Fix crash in AST unparser when unparsing dict comprehension unpacking (#145556) 2026-03-09 10:37:23 -07:00
bltinmodule.c [3.15] gh-151510: Fix __lazy_import__ without frame (GH-151511) (#151610) 2026-06-17 18:40:33 +00:00
bootstrap_hash.c GH-131238: Core header refactor (GH-131250) 2025-03-17 09:19:04 +00:00
brc.c Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00
bytecodes.c [3.15] gh-151436: Fix missing tstate->last_profiled_frame updates (GH-151437) (#151612) 2026-06-19 10:24:53 +02:00
ceval.c [3.15] gh-151436: Fix missing tstate->last_profiled_frame updates (GH-151437) (#151612) 2026-06-19 10:24:53 +02:00
ceval.h gh-142186: Allow all PEP-669 events to be per-code object and disableable (GH-146182) 2026-04-22 09:08:23 +01:00
ceval_gil.c gh-144748: Make PyErr_CheckSignals raise the exception scheduled by PyThreadState_SetAsyncExc (GH-145178) 2026-03-02 11:47:32 +01:00
ceval_macros.h GH-143732: SEND specialization (GH-148963) 2026-05-05 15:19:16 +01:00
codecs.c [3.15] gh-151253: Dump the Python path configuration on _PyCodec_InitRegistry() failure (#151250) (#151269) 2026-06-10 22:03:27 +02:00
codegen.c GH-143732: SEND specialization (GH-148963) 2026-05-05 15:19:16 +01:00
compile.c [3.15] gh-151112: Fix crash in compiler_mod() when entering the current compilation unit fails (GH-151234) (#151350) 2026-06-11 15:22:31 +00:00
condvar.h gh-104530: Enable native Win32 condition variables by default (GH-104531) 2024-02-02 13:50:51 +00:00
config_common.h gh-76785: Add PyInterpreterConfig Helpers (gh-117170) 2024-04-02 20:35:52 +00:00
context.c [3.15] gh-151773: Fix NULL dereference in PyContextVar_Set (GH-151836) (#152009) 2026-06-23 14:46:05 +00:00
critical_section.c [3.15] gh-150902: Optimize PyCriticalSection2 to skip locking the same locks held by the current CS2 (gh-151554) 2026-06-19 09:52:07 -04:00
crossinterp.c [3.15] gh-151842: Fix crash upon OOM in _interpreters.capture_exception (GH-151843) (GH-152031) 2026-06-23 20:58:10 +00:00
crossinterp_data_lookup.h gh-147960: Fix memory leak in crossinterp _tuple_shared() on alloc failure (#147961) 2026-04-01 18:34:55 +02:00
crossinterp_exceptions.h gh-132775: Clean Up Cross-Interpreter Error Handling (gh-135369) 2025-06-13 16:45:21 -06:00
dtoa.c gh-145633: Remove support for ancient ARM platforms with mixed-endian doubles (#145634) 2026-03-11 12:39:24 +01:00
dup2.c gh-108765: Python.h no longer includes <unistd.h> (#108783) 2023-09-02 16:50:18 +02:00
dynamic_annotations.c bpo-32241: Add the const qualifire to declarations of umodifiable strings. (#4748) 2017-12-12 13:55:04 +02:00
dynload_hpux.c gh-88402: Add new sysconfig variables on Windows (GH-110049) 2023-10-04 22:50:29 +00:00
dynload_shlib.c gh-146636: PEP 803: add Py_TARGET_ABI3T and .abi3t.so extension (GH-146637) 2026-04-01 16:14:59 +02:00
dynload_stub.c gh-88402: Add new sysconfig variables on Windows (GH-110049) 2023-10-04 22:50:29 +00:00
dynload_win.c gh-148690: Build Windows freethreaded binaries into separate directory and include python3t.dll on GIL-enabled (GH-149218) 2026-05-04 17:45:08 +01:00
emscripten_signal.c GH-108614: Unbreak emscripten build (GH-109132) 2023-09-08 17:54:45 +01:00
emscripten_syscalls.c gh-124621: Emscripten: Fix __syscall_ioctl patch (GH-136993) 2025-07-22 15:05:26 +02:00
emscripten_trampoline.c gh-145037: Fix Emscripten trampoline with emcc >= 4.0.19 (#145038) 2026-02-26 06:21:05 +08:00
emscripten_trampoline_inner.c gh-128627: Use __builtin_wasm_test_function_pointer_signature for Emscripten trampoline (#137470) 2025-09-17 15:33:55 +01:00
errors.c gh-146480: Override the exception in _PyErr_SetKeyError() (#146486) 2026-03-27 11:20:19 +00:00
executor_cases.c.h [3.15] gh-151436: Fix missing tstate->last_profiled_frame updates (GH-151437) (#151612) 2026-06-19 10:24:53 +02:00
fileutils.c gh-42400: Fix buffer overflow in _Py_wrealpath() for very long paths (#141529) 2025-11-18 17:34:58 +01:00
flowgraph.c [3.15] gh-151112: Move an assert that may fail in cfg_builder_check (GH-151153) (#151313) 2026-06-11 09:46:04 +00:00
frame.c gh-144446: Fix some frame object thread-safety issues (gh-144479) 2026-02-06 09:43:36 -05:00
frozen.c GH-145278: freeze encodings (partially) and linecache (#148347) 2026-04-14 21:01:23 +01:00
frozenmain.c Use PyConfig_Get() in frozenmain.c (#137421) 2025-08-06 14:33:28 +02:00
future.c gh-126139: Improve error message location for future statement with unknown feature (#126140) 2024-10-29 23:57:59 +00:00
gc.c [3.15] gh-146527: Fix memory leak in _PyGC_Fini() (GH-150969) (#150970) 2026-06-05 14:11:37 +00:00
gc_free_threading.c gh-148937: revert process RSS based GC deferral (#149475) 2026-05-07 14:32:14 +03:00
gc_gil.c gh-100240: Use a consistent implementation for freelists (#121934) 2024-07-22 12:08:27 -04:00
generated_cases.c.h [3.15] gh-151436: Fix missing tstate->last_profiled_frame updates (GH-151437) (#151612) 2026-06-19 10:24:53 +02:00
getargs.c gh-146615: Fix format specifiers in Python/ directory (GH-146619) 2026-03-31 10:59:17 +03:00
getcompiler.c gh-141341: Rename COMPILER macro to _Py_COMPILER on Windows (#141342) 2025-11-10 15:50:51 +01:00
getcopyright.c gh-126133: Only use start year in PSF copyright, remove end years (#126236) 2024-11-12 15:59:19 +02:00
getopt.c GH-133336: Remove reserved `-J` flag for Jython (#133444) 2025-05-05 15:09:19 +00:00
getplatform.c bpo-32150: Expand tabs to spaces in C files. (#4583) 2017-11-28 17:56:10 +02:00
getversion.c gh-119132: Remove "experimental" tag from the CPython free-threading. (gh-135550) 2025-06-16 23:32:52 +09:00
hamt.c [3.15] gh-150178: Fix refcount leaks in hamt allocation failure paths (GH-150179) (#150303) 2026-05-23 19:27:27 +00:00
hashtable.c gh-111545: Add Py_HashPointer() function (#112096) 2023-12-06 15:09:22 +01:00
import.c [3.15] gh-150633: Properly handle null characters in the name when importing frozen modules (GH-150634) (GH-151100) 2026-06-08 18:58:11 +00:00
importdl.c gh-140011: Delete importdl assertion that prevents importing embedded modules from packages (GH-141605) 2025-11-26 14:12:49 +01:00
index_pool.c gh-91048: Refactor and optimize remote debugging module (#134652) 2025-05-25 20:19:29 +00:00
initconfig.c [3.15] gh-151218: Replace sys.flags in PyConfig_Set() (GH-151402) (#151552) 2026-06-16 16:48:56 +00:00
instruction_sequence.c GH-143493: Conform to spec for generator expressions while supporting virtual iterators (GH-143569) 2026-01-16 09:11:58 +00:00
instrumentation.c gh-142186: Allow all PEP-669 events to be per-code object and disableable (GH-146182) 2026-04-22 09:08:23 +01:00
interpconfig.c gh-146615: Fix format specifiers in Python/ directory (GH-146619) 2026-03-31 10:59:17 +03:00
intrinsics.c gh-111489: Remove _PyTuple_FromArray() alias (#139973) 2025-10-11 22:58:14 +02:00
jit.c GH-143732: SEND specialization (GH-148963) 2026-05-05 15:19:16 +01:00
jit_publish.c GH-126910: Add GNU backtrace support for unwinding JIT frames (#149104) 2026-05-05 09:29:07 +01:00
jit_unwind.c [3.15] gh-139808: Add branch protections for aarch64 in asm_trampoline.S (GH-130864) (#149730) 2026-05-12 22:10:24 +02:00
legacy_tracing.c gh-148037: remove critical section from PyCode_Addr2Line (#148103) 2026-04-10 17:58:17 +05:30
lock.c gh-148820: Fix _PyRawMutex use-after-free on spurious semaphore wakeup (gh-148852) 2026-04-22 14:31:19 -04:00
marshal.c [3.15] gh-150285: Fix too long docstrings in Argument Clinic code (GH-150338) (GH-150350) 2026-05-24 22:31:19 +03:00
modsupport.c gh-146636: Py_mod_abi mandatory for modules created from slots array (GH-146855) 2026-04-02 13:54:21 +02:00
mysnprintf.c Add a warning message about PyOS_snprintf (#95993) 2022-10-07 11:49:53 -07:00
mystrtoul.c gh-108765: Python.h no longer includes <ctype.h> (#108831) 2023-09-03 18:54:27 +02:00
object_stack.c gh-100240: Use a consistent implementation for freelists (#121934) 2024-07-22 12:08:27 -04:00
opcode_targets.h GH-143732: SEND specialization (GH-148963) 2026-05-05 15:19:16 +01:00
optimizer.c GH-143732: SEND specialization (GH-148963) 2026-05-05 15:19:16 +01:00
optimizer_analysis.c [3.15] gh-145235: Make dict watcher API thread-safe for free-threaded builds (gh-145233) (#149690) 2026-05-11 14:23:39 -04:00
optimizer_bytecodes.c [3.15] gh-149459: Fix segfault when _LOAD_SPECIAL guard deoptimizes (GH-149478) (#149552) 2026-05-08 11:48:04 +00:00
optimizer_cases.c.h [3.15] gh-149459: Fix segfault when _LOAD_SPECIAL guard deoptimizes (GH-149478) (#149552) 2026-05-08 11:48:04 +00:00
optimizer_symbols.c gh-146261: JIT: protect against function version changes (#146300) 2026-04-13 02:23:47 +08:00
parking_lot.c gh-148820: Fix _PyRawMutex use-after-free on spurious semaphore wakeup (gh-148852) 2026-04-22 14:31:19 -04:00
pathconfig.c gh-133644: Remove deprecated Python initialization getter functions (#133661) 2025-05-09 11:39:23 +00:00
perf_jit_trampoline.c [3.15] gh-150723: Fix perf jitdump files on macOS (GH-150728) (#150832) 2026-06-03 00:41:24 +00:00
perf_trampoline.c [3.15] gh-149156: Fix perf trampoline crash after fork (GH-150347) (#150394) 2026-05-25 19:19:22 +01:00
preconfig.c gh-146302: make Py_IsInitialized() thread-safe and reflect true init completion (GH-146303) 2026-04-11 21:54:23 +00:00
pyarena.c Chore: Fix typo in pyarena.c (#126527) 2024-11-07 16:37:41 +01:00
pyctype.c Include files missed in r72044. 2009-04-27 20:54:42 +00:00
pyfpe.c bpo-46315: Add ifdef HAVE_ feature checks for WASI compatibility (GH-30507) 2022-01-13 09:46:04 +01:00
pyhash.c gh-141226: Deprecate PEP-456 support for embedders (#141287) 2026-02-21 12:42:13 +01:00
pylifecycle.c [3.15] gh-151218: Replace sys.flags in PyConfig_Set() (GH-151402) (#151552) 2026-06-16 16:48:56 +00:00
pymath.c bpo-45440: Remove pymath.c fallbacks (GH-28977) 2021-10-15 19:45:34 +02:00
pystate.c [3.15] gh-151613: Fix remote debugging frame cache ABA (#152448) 2026-06-27 17:42:31 +00:00
pystats.c gh-146073: Add fitness/exit quality mechanism for JIT trace frontend (GH-148089) 2026-04-24 10:37:01 +01:00
pystrcmp.c gh-108767: Replace ctype.h functions with pyctype.h functions (#108772) 2023-09-01 18:36:53 +02:00
pystrhex.c [3.15] gh-149685: Use the _Py prefix for private C macros (GH-149686) (GH-149790) 2026-05-13 23:29:08 +02:00
pystrtod.c gh-141004: soft-deprecate Py_INFINITY macro (#141033) 2025-11-12 13:44:49 +01:00
Python-ast.c gh-116021: Deprecate support for instantiating abstract AST nodes (#137865) 2026-05-02 09:50:06 -07:00
Python-tokenize.c gh-128341: Use _Py_ABI_SLOT in stdlib modules (#145770) 2026-03-24 17:47:55 +00:00
pythonrun.c gh-146615: Fix format specifiers in Python/ directory (GH-146619) 2026-03-31 10:59:17 +03:00
pytime.c gh-145731: Fix negative timestamp during DST on Windows (GH-145728) 2026-03-10 09:45:07 +01:00
qsbr.c gh-144438: Fix false sharing between QSBR and tlbc_index (gh-144554) 2026-02-17 11:12:25 -05:00
README Issue #18093: Factor out the programs that embed the runtime 2014-07-25 21:52:14 +10:00
record_functions.c.h GH-143732: SEND specialization (GH-148963) 2026-05-05 15:19:16 +01:00
remote_debug.h [3.15] gh-151029: Fix sys.remote_exec() unable to find writable memory when libpython replaced on disk (GH-151032) (#152443) 2026-06-27 16:49:40 +00:00
remote_debugging.c gh-138122: Implement frame caching in RemoteUnwinder to reduce memory reads (#142137) 2025-12-06 22:37:34 +00:00
slots.c gh-149044: Implement PEP 820 – PySlot: Unified slot system for the C API (GH-149055) 2026-05-05 09:18:04 +02:00
slots.toml gh-149044: Implement PEP 820 – PySlot: Unified slot system for the C API (GH-149055) 2026-05-05 09:18:04 +02:00
slots_generated.c gh-149044: Implement PEP 820 – PySlot: Unified slot system for the C API (GH-149055) 2026-05-05 09:18:04 +02:00
specialize.c [3.15] gh-148825: Fix build error if specialization is disabled (GH-148826) (#152206) 2026-06-25 14:36:04 +00:00
stackrefs.c gh-131527: Stackref debug borrow checker (#140599) 2025-11-05 11:12:56 -08:00
stdlib_module_names.h gh-81313: Add the math.integer module (PEP-791) (GH-133909) 2025-10-31 16:13:43 +02:00
structmember.c gh-146270: Fix PyMember_SetOne(..., NULL) not being atomic (gh-148800) 2026-05-06 09:50:24 -04:00
suggestions.c GH-131238: Core header refactor (GH-131250) 2025-03-17 09:19:04 +00:00
symtable.c [3.15] gh-150700: Fix class-scope inline comprehensions when nested scopes reference __class__ and friends (GH-150735) (#151211) 2026-06-09 16:33:04 -07:00
sysmodule.c [3.15] gh-151218: Replace sys.flags in PyConfig_Set() (GH-151402) (#151552) 2026-06-16 16:48:56 +00:00
thread.c gh-134745: Use "pymutex" for sys.thread_info on Windows (#141140) 2025-11-06 16:10:39 +01:00
thread_nt.h gh-134745: Change PyThread_allocate_lock() implementation to PyMutex (#134747) 2025-05-30 10:15:47 +00:00
thread_pthread.h gh-137884: Added threading.get_native_id() on Illumos/Solaris (GH-137927) 2025-08-20 17:10:44 +00:00
thread_pthread_stubs.h gh-125161: return non zero value in pthread_self on wasi (#125303) 2024-10-13 20:59:41 +05:30
tier2_engine.md Docs: fix spelling of the word 'transferring' (#116641) 2024-03-13 23:53:32 +01:00
traceback.c gh-145559: Add PyUnstable_DumpTraceback() and PyUnstable_DumpTracebackThreads() (#148145) 2026-05-06 15:01:12 +00:00
tracemalloc.c gh-144763: Don't detach the GIL in tracemalloc (#144779) 2026-02-18 15:57:48 +00:00
uniqueid.c gh-128923: Use zero to indicate unassigned unique id (#128925) 2025-01-17 16:42:27 +01:00
vm-state.md gh-133079: Remove Py_C_RECURSION_LIMIT & PyThreadState.c_recursion_remaining (GH-133080) 2025-04-29 12:56:20 +02:00

Miscellaneous source files for the main Python shared library