Blame SOURCES/0004-6-failures-in-TCs.patch

rdobuilder 0a9e34
From 09f738ced164b3b347cd4865c11a4e7c45de25e3 Mon Sep 17 00:00:00 2001
rdobuilder 0a9e34
From: =?UTF-8?q?S=C3=BCmer=20Cip?= <sumer.cip@platform.sh>
rdobuilder 0a9e34
Date: Thu, 4 Aug 2022 14:04:47 +0300
rdobuilder 0a9e34
Subject: [PATCH 04/11] 6 failures in TCs
rdobuilder 0a9e34
rdobuilder 0a9e34
---
rdobuilder 0a9e34
 yappi/_yappi.c | 57 ++++++++++++++++++++++++++------------------------
rdobuilder 0a9e34
 1 file changed, 30 insertions(+), 27 deletions(-)
rdobuilder 0a9e34
rdobuilder 0a9e34
diff --git a/yappi/_yappi.c b/yappi/_yappi.c
rdobuilder 0a9e34
index 00fdbd4..d2f0af4 100644
rdobuilder 0a9e34
--- a/yappi/_yappi.c
rdobuilder 0a9e34
+++ b/yappi/_yappi.c
rdobuilder 0a9e34
@@ -1292,17 +1292,37 @@ _resume_greenlet_ctx(_ctx *ctx)
rdobuilder 0a9e34
     ydprintf("resuming context: %ld, shift: %lld", ctx->id, shift);
rdobuilder 0a9e34
 }
rdobuilder 0a9e34
 
rdobuilder 0a9e34
+static void 
rdobuilder 0a9e34
+_eval_setprofile(PyThreadState *ts)
rdobuilder 0a9e34
+{
rdobuilder 0a9e34
+#if PY_VERSION_HEX < 0x030a00b1
rdobuilder 0a9e34
+    ts->use_tracing = 1;
rdobuilder 0a9e34
+#else
rdobuilder 0a9e34
+    ts->cframe->use_tracing = 1;
rdobuilder 0a9e34
+#endif
rdobuilder 0a9e34
+    ts->c_profilefunc = _yapp_callback;
rdobuilder 0a9e34
+
rdobuilder 0a9e34
+    //_update_tracing_state()
rdobuilder 0a9e34
+
rdobuilder 0a9e34
+//  todo: do this only for 3.11
rdobuilder 0a9e34
+    ts->cframe->use_tracing = 255;
rdobuilder 0a9e34
+}
rdobuilder 0a9e34
+
rdobuilder 0a9e34
+static void
rdobuilder 0a9e34
+_eval_unsetprofile(PyThreadState *ts)
rdobuilder 0a9e34
+{
rdobuilder 0a9e34
+#if PY_VERSION_HEX < 0x030a00b1
rdobuilder 0a9e34
+    ts->use_tracing = 0;
rdobuilder 0a9e34
+#else
rdobuilder 0a9e34
+    ts->cframe->use_tracing = 0;
rdobuilder 0a9e34
+#endif
rdobuilder 0a9e34
+    ts->c_profilefunc = NULL;
rdobuilder 0a9e34
+}
rdobuilder 0a9e34
+
rdobuilder 0a9e34
 static _ctx *
rdobuilder 0a9e34
 _bootstrap_thread(PyThreadState *ts)
rdobuilder 0a9e34
 {
rdobuilder 0a9e34
-// #if PY_VERSION_HEX < 0x030a00b1
rdobuilder 0a9e34
-//     ts->use_tracing = 1;
rdobuilder 0a9e34
-// #else
rdobuilder 0a9e34
-//     ts->cframe->use_tracing = 1;
rdobuilder 0a9e34
-// #endif
rdobuilder 0a9e34
-//     ts->c_profilefunc = _yapp_callback;
rdobuilder 0a9e34
-    PyEval_SetProfile(_yapp_callback, NULL);
rdobuilder 0a9e34
-
rdobuilder 0a9e34
+    _eval_setprofile(ts);
rdobuilder 0a9e34
     return NULL;
rdobuilder 0a9e34
 }
rdobuilder 0a9e34
 
rdobuilder 0a9e34
@@ -1331,16 +1351,7 @@ _profile_thread(PyThreadState *ts)
rdobuilder 0a9e34
     } else {
rdobuilder 0a9e34
         ctx = (_ctx *)it->val;
rdobuilder 0a9e34
     }
rdobuilder 0a9e34
-    
rdobuilder 0a9e34
-// #if PY_VERSION_HEX < 0x030a00b1
rdobuilder 0a9e34
-//     ts->use_tracing = 1;
rdobuilder 0a9e34
-// #else
rdobuilder 0a9e34
-//     ts->cframe->use_tracing = 1;
rdobuilder 0a9e34
-// #endif
rdobuilder 0a9e34
-//     ts->c_profilefunc = _yapp_callback;
rdobuilder 0a9e34
-    // TODO: How to do this for all threads?
rdobuilder 0a9e34
-    PyEval_SetProfile(_yapp_callback, NULL);
rdobuilder 0a9e34
-
rdobuilder 0a9e34
+    _eval_setprofile(ts);
rdobuilder 0a9e34
     ctx->id = ctx_id;
rdobuilder 0a9e34
     ctx->tid = ts->thread_id;
rdobuilder 0a9e34
     ctx->ts_ptr = ts;
rdobuilder 0a9e34
@@ -1356,15 +1367,7 @@ _profile_thread(PyThreadState *ts)
rdobuilder 0a9e34
 static _ctx*
rdobuilder 0a9e34
 _unprofile_thread(PyThreadState *ts)
rdobuilder 0a9e34
 {
rdobuilder 0a9e34
-// #if PY_VERSION_HEX < 0x030a00b1
rdobuilder 0a9e34
-//     ts->use_tracing = 0;
rdobuilder 0a9e34
-// #else
rdobuilder 0a9e34
-//     ts->cframe->use_tracing = 0;
rdobuilder 0a9e34
-// #endif
rdobuilder 0a9e34
-//     ts->c_profilefunc = NULL;
rdobuilder 0a9e34
-
rdobuilder 0a9e34
-    // TODO: How to do this for all threads?
rdobuilder 0a9e34
-    PyEval_SetProfile(NULL, NULL);
rdobuilder 0a9e34
+    _eval_unsetprofile(ts);
rdobuilder 0a9e34
 
rdobuilder 0a9e34
     return NULL; //dummy return for enum_threads() func. prototype
rdobuilder 0a9e34
 }
rdobuilder 0a9e34
-- 
rdobuilder 0a9e34
2.34.1
rdobuilder 0a9e34