|
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 |
|