From d94af94dde8331fb5352a5a2dd0b7e62824e92ae Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Thu, 30 Nov 2023 16:25:04 +0100 Subject: [PATCH] [erts] Fix crash on reception of fragmentated message to unaliased process --- erts/emulator/beam/erl_proc_sig_queue.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/erts/emulator/beam/erl_proc_sig_queue.c b/erts/emulator/beam/erl_proc_sig_queue.c index dbc0be63de29..1dd8641ebe0a 100644 --- a/erts/emulator/beam/erl_proc_sig_queue.c +++ b/erts/emulator/beam/erl_proc_sig_queue.c @@ -4837,8 +4837,6 @@ handle_alias_message(Process *c_p, ErtsMessage *sig, ErtsMessage ***next_nm_sig) ASSERT(is_internal_pid(from) || is_atom(from)); ASSERT(is_internal_pid_ref(alias)); - ERL_MESSAGE_FROM(sig) = from; - mon = erts_monitor_tree_lookup(ERTS_P_MONITORS(c_p), alias); flags = mon ? mon->flags : (Uint16) 0; if (!(flags & ERTS_ML_STATE_ALIAS_MASK) @@ -4848,17 +4846,13 @@ handle_alias_message(Process *c_p, ErtsMessage *sig, ErtsMessage ***next_nm_sig) * drop message... */ remove_nm_sig(c_p, sig, next_nm_sig); - /* restored as message... */ - ERL_MESSAGE_TERM(sig) = msg; - if (type == ERTS_SIG_Q_TYPE_DIST) - sig->data.heap_frag = &sig->hfrag; - else - sig->data.attached = data_attached; sig->next = NULL;; erts_cleanup_messages(sig); return 2; } + ERL_MESSAGE_FROM(sig) = from; + if ((flags & ERTS_ML_STATE_ALIAS_MASK) == ERTS_ML_STATE_ALIAS_ONCE) { mon->flags &= ~ERTS_ML_STATE_ALIAS_MASK;