From c519ba7a87026093be7d757c71ca3210490ec566 Mon Sep 17 00:00:00 2001 From: Charalampos Stratakis Date: Mon, 28 Sep 2026 15:57:28 +0200 Subject: [PATCH] gh-158294: Avoid relying on SystemTap probe handler ordering Merge the tracing state and filter output in a single probe handler as SystemTap does not guarantee the execution order of handlers sharing a probe point. --- Lib/test/dtracedata/call_stack.stp | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/Lib/test/dtracedata/call_stack.stp b/Lib/test/dtracedata/call_stack.stp index d4455fc8489af20..2901f44654be379 100644 --- a/Lib/test/dtracedata/call_stack.stp +++ b/Lib/test/dtracedata/call_stack.stp @@ -10,15 +10,6 @@ function basename:string(path:string) return last_token; } -probe @PYTHON_SYSTEMTAP_PROBE@("function__entry") -{ - funcname = user_string($arg2); - - if (funcname == "start") { - tracing = 1; - } -} - probe @PYTHON_SYSTEMTAP_PROBE@("function__entry"), @PYTHON_SYSTEMTAP_PROBE@("function__return") { @@ -26,17 +17,14 @@ probe @PYTHON_SYSTEMTAP_PROBE@("function__entry"), funcname = user_string($arg2); lineno = $arg3; - if (tracing) { + if (funcname == "start") { + if ($$name == "function__entry") { + tracing = 1; + } else { + tracing = 0; + } + } else if (tracing) { printf("%d\t%s:%s:%s:%d\n", gettimeofday_us(), $$name, basename(filename), funcname, lineno); } } - -probe @PYTHON_SYSTEMTAP_PROBE@("function__return") -{ - funcname = user_string($arg2); - - if (funcname == "start") { - tracing = 0; - } -}