[3.13] gh-141579: Fix perf_jit backend in sys.activate_stack_trampoline() (GH-141580) (#141582)

This commit is contained in:
Pablo Galindo Salgado 2025-11-15 03:17:49 +00:00 committed by GitHub
parent fb7ae3fe83
commit 7e1a0dbc07
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 28 additions and 8 deletions

View file

@ -225,6 +225,24 @@ def test_sys_api_get_status(self):
"""
assert_python_ok("-c", code)
def test_sys_api_perf_jit_backend(self):
code = """if 1:
import sys
sys.activate_stack_trampoline("perf_jit")
assert sys.is_stack_trampoline_active() is True
sys.deactivate_stack_trampoline()
assert sys.is_stack_trampoline_active() is False
"""
assert_python_ok("-c", code, PYTHON_JIT="0")
def test_sys_api_with_existing_perf_jit_trampoline(self):
code = """if 1:
import sys
sys.activate_stack_trampoline("perf_jit")
sys.activate_stack_trampoline("perf_jit")
"""
assert_python_ok("-c", code, PYTHON_JIT="0")
def is_unwinding_reliable_with_frame_pointers():
cflags = sysconfig.get_config_var("PY_CORE_CFLAGS")

View file

@ -0,0 +1,2 @@
Fix :func:`sys.activate_stack_trampoline` to properly support the
``perf_jit`` backend. Patch by Pablo Galindo.

View file

@ -2381,6 +2381,7 @@ sys_activate_stack_trampoline_impl(PyObject *module, const char *backend)
return NULL;
}
}
}
else if (strcmp(backend, "perf_jit") == 0) {
_PyPerf_Callbacks cur_cb;
_PyPerfTrampoline_GetCallbacks(&cur_cb);
@ -2391,7 +2392,6 @@ sys_activate_stack_trampoline_impl(PyObject *module, const char *backend)
}
}
}
}
else {
PyErr_Format(PyExc_ValueError, "invalid backend: %s", backend);
return NULL;