File 0382-Fix-yield-due-to-receive-tracing.patch of Package erlang
From 134a122b0668dc3a1cdf3656d7592b2f83cc7bdb Mon Sep 17 00:00:00 2001
From: Rickard Green <rickard@erlang.org>
Date: Fri, 12 Feb 2021 01:26:04 +0100
Subject: [PATCH 2/2] Fix yield due to receive tracing
---
erts/emulator/beam/erl_proc_sig_queue.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/erts/emulator/beam/erl_proc_sig_queue.c b/erts/emulator/beam/erl_proc_sig_queue.c
index 7fa0135e93..0a3afd8218 100644
--- a/erts/emulator/beam/erl_proc_sig_queue.c
+++ b/erts/emulator/beam/erl_proc_sig_queue.c
@@ -4730,9 +4730,13 @@ erts_proc_sig_handle_incoming(Process *c_p, erts_aint32_t *statep,
do {
if (msg_tracing) {
+ int tres;
ERTS_PROC_SIG_HDBG_PRIV_CHKQ(c_p, &tracing, next_nm_sig);
- if (handle_msg_tracing(c_p, &tracing, next_nm_sig) != 0) {
+ tres = handle_msg_tracing(c_p, &tracing, next_nm_sig);
+ if (tres != 0) {
ERTS_PROC_SIG_HDBG_PRIV_CHKQ(c_p, &tracing, next_nm_sig);
+ if (tres < 0)
+ yield = !0;
break; /* tracing limit or end... */
}
ERTS_PROC_SIG_HDBG_PRIV_CHKQ(c_p, &tracing, next_nm_sig);
--
2.26.2