gh-141579: Fix perf_jit backend in sys.activate_stack_trampoline() (#141580)

This commit is contained in:
Pablo Galindo Salgado
2025-11-15 02:23:54 +00:00
committed by GitHub
parent 53d65c840e
commit 4ceb077c5c
3 changed files with 28 additions and 8 deletions

View File

@@ -238,6 +238,24 @@ class TestPerfTrampoline(unittest.TestCase):
"""
assert_python_ok("-c", code, PYTHON_JIT="0")
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

@@ -2380,6 +2380,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);
@@ -2390,7 +2391,6 @@ sys_activate_stack_trampoline_impl(PyObject *module, const char *backend)
}
}
}
}
else {
PyErr_Format(PyExc_ValueError, "invalid backend: %s", backend);
return NULL;