https://github.com/python/cpython/commit/f0c6fccd08904787a39269367f09f263d496114c
commit: f0c6fccd08904787a39269367f09f263d496114c
branch: main
author: mpage <[email protected]>
committer: Eclips4 <[email protected]>
date: 2024-11-01T23:10:58Z
summary:

gh-126255: Ignore warning about JIT being deactivated when perf support is 
active in `test_embed.InitConfigTests.test_initconfig_api` (#126302)

Temporarily ignore warnings about JIT deactivation when perf support is active. 
This will be reverted as soon as a way is found to determine at run time 
whether the interpreter was built with JIT. Currently, this is not possible on 
Windows.


Co-authored-by: Kirill Podoprigora <[email protected]>
Co-authored-by: Ken Jin <[email protected]>
Co-authored-by: Pablo Galindo <[email protected]>

files:
M Lib/test/test_embed.py
M Lib/test/test_perf_profiler.py
M Python/pylifecycle.c
M Python/sysmodule.c

diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index 4ea43edccda63e..5e886b6c8c38ec 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -1,5 +1,6 @@
 # Run the tests in Programs/_testembed.c (tests for the CPython embedding APIs)
 from test import support
+from test.libregrtest.utils import get_build_info
 from test.support import import_helper, os_helper, threading_helper, MS_WINDOWS
 import unittest
 
@@ -1780,8 +1781,10 @@ def test_initconfig_api(self):
             'perf_profiling': 2,
         }
         config_dev_mode(preconfig, config)
+        # Temporarily enable ignore_stderr=True to ignore warnings on JIT 
builds
+        # See gh-126255 for more information
         self.check_all_configs("test_initconfig_api", config, preconfig,
-                               api=API_ISOLATED)
+                               api=API_ISOLATED, ignore_stderr=True)
 
     def test_initconfig_get_api(self):
         self.run_embedded_interpreter("test_initconfig_get_api")
diff --git a/Lib/test/test_perf_profiler.py b/Lib/test/test_perf_profiler.py
index b55d441759eb69..1e74990878007a 100644
--- a/Lib/test/test_perf_profiler.py
+++ b/Lib/test/test_perf_profiler.py
@@ -210,14 +210,14 @@ def test_sys_api_with_existing_trampoline(self):
                 sys.activate_stack_trampoline("perf")
                 sys.activate_stack_trampoline("perf")
                 """
-        assert_python_ok("-c", code)
+        assert_python_ok("-c", code, PYTHON_JIT="0")
 
     def test_sys_api_with_invalid_trampoline(self):
         code = """if 1:
                 import sys
                 sys.activate_stack_trampoline("invalid")
                 """
-        rc, out, err = assert_python_failure("-c", code)
+        rc, out, err = assert_python_failure("-c", code, PYTHON_JIT="0")
         self.assertIn("invalid backend: invalid", err.decode())
 
     def test_sys_api_get_status(self):
@@ -228,7 +228,7 @@ def test_sys_api_get_status(self):
                 sys.deactivate_stack_trampoline()
                 assert sys.is_stack_trampoline_active() is False
                 """
-        assert_python_ok("-c", code)
+        assert_python_ok("-c", code, PYTHON_JIT="0")
 
 
 def is_unwinding_reliable_with_frame_pointers():
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 2efaa9db7d7d58..23882d083844ac 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1310,12 +1310,17 @@ init_interp_main(PyThreadState *tstate)
             enabled = *env != '0';
         }
         if (enabled) {
+#ifdef _Py_JIT
+            // perf profiler works fine with tier 2 interpreter, so
+            // only checking for a "real JIT".
             if (config->perf_profiling > 0) {
                 (void)PyErr_WarnEx(
                     PyExc_RuntimeWarning,
                     "JIT deactivated as perf profiling support is active",
                     0);
-            } else {
+            } else
+#endif
+            {
                 PyObject *opt = _PyOptimizer_NewUOpOptimizer();
                 if (opt == NULL) {
                     return _PyStatus_ERR("can't initialize optimizer");
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index cbb73977e1aae6..a4abd7c3c45709 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -2290,6 +2290,7 @@ sys_activate_stack_trampoline_impl(PyObject *module, 
const char *backend)
 #ifdef _Py_JIT
     _PyOptimizerObject* optimizer = _Py_GetOptimizer();
     if (optimizer != NULL) {
+        Py_DECREF(optimizer);
         PyErr_SetString(PyExc_ValueError, "Cannot activate the perf trampoline 
if the JIT is active");
         return NULL;
     }

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to