File 1536-erts-Fix-bug-in-meta-tracing-with-session.patch of Package erlang
From 554ec2c2337212fbf607d5967db2df60254ad9ff Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Wed, 26 Jun 2024 12:38:13 +0200
Subject: [PATCH] erts: Fix bug in meta tracing with session
The meta tracer was the calling process instead of the session tracer.
---
erts/emulator/beam/erl_bif_trace.c | 11 ++++--
erts/emulator/test/trace_session_SUITE.erl | 42 +++++++++++++++++-----
2 files changed, 42 insertions(+), 11 deletions(-)
diff --git a/erts/emulator/beam/erl_bif_trace.c b/erts/emulator/beam/erl_bif_trace.c
index 632e21bee4..0ab8b59406 100644
--- a/erts/emulator/beam/erl_bif_trace.c
+++ b/erts/emulator/beam/erl_bif_trace.c
@@ -349,8 +349,15 @@ trace_pattern(Process* p, ErtsTraceSession *session,
}
flags.breakpoint = 1;
flags.meta = 1;
- if (ERTS_TRACER_IS_NIL(meta_tracer))
- meta_tracer = erts_term_to_tracer(THE_NON_VALUE, p->common.id);
+ if (ERTS_TRACER_IS_NIL(meta_tracer)) {
+ if (ERTS_TRACER_IS_NIL(session->tracer)) {
+ meta_tracer = erts_term_to_tracer(THE_NON_VALUE,
+ p->common.id);
+ }
+ else {
+ erts_tracer_update(&meta_tracer, session->tracer);
+ }
+ }
break;
case am_global:
if (flags.breakpoint) {
--
2.35.3