You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CPython 3.14 introduces a JIT compiler that creates large rwxp
anonymous memory mappings with internal guard pages. The LRU
cache in copyMemoryFromProcess attempts to read entire vmaps
with process_vm_readv, which returns EFAULT if any page in the
range is inaccessible. This caused InvalidRemoteAddress crashes
when reading frames or pthread structs located in these regions.
The cache now falls back to reading only the requested bytes
when a full-vmap read fails.
Python 3.14 also uses a tail call interpreter where the eval
loop is split into LLVM-generated _TAIL_CALL_*.llvm.* functions
instead of the traditional _PyEval_EvalFrameDefault. These are
now recognized as Python frame boundaries in native traces.
Python 3.14 added FRAME_OWNED_BY_INTERPRETER to the _frameowner
enum, shifting FRAME_OWNED_BY_CSTACK from 3 to 4. The shim frame
detection now uses properly namespaced constants for each version.
Additionally, the base/sentinel frame at the bottom of each
thread's frame stack has a NULL f_executable in 3.14 and is now
correctly skipped instead of producing a bogus "???" frame.
The native unwinding assertions in core file tests are relaxed
for platforms where glibc syscall wrappers truncate the unwind
chain (e.g. glibc 2.42+).
Signed-off-by: Pablo Galindo Salgado <pablogsal@gmail.com>
0 commit comments