aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_message.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2018-04-26 14:27:11 +0200
committerRickard Green <[email protected]>2018-04-26 14:27:11 +0200
commit0183ddffb112d898d9b8c0396afa7f2210b9e169 (patch)
tree7d0c40190db5bfc80a0da6f9640077d10bfaa237 /erts/emulator/beam/erl_message.c
parentb22051714857713e0f4f43f77ea02ec50532b2df (diff)
parent630d7e7df458490ae4d5c263e096851e14349537 (diff)
downloadotp-0183ddffb112d898d9b8c0396afa7f2210b9e169.tar.gz
otp-0183ddffb112d898d9b8c0396afa7f2210b9e169.tar.bz2
otp-0183ddffb112d898d9b8c0396afa7f2210b9e169.zip
Merge branch 'rickard/process_info/OTP-14966'
* rickard/process_info/OTP-14966: Restore merge of signal queues in queue_messages() if main lock is held Fix message tracing
Diffstat (limited to 'erts/emulator/beam/erl_message.c')
-rw-r--r--erts/emulator/beam/erl_message.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_message.c b/erts/emulator/beam/erl_message.c
index 34bd11d87c..8eae85ccdd 100644
--- a/erts/emulator/beam/erl_message.c
+++ b/erts/emulator/beam/erl_message.c
@@ -306,6 +306,9 @@ erts_queue_dist_message(Process *rcvr,
LINK_MESSAGE(rcvr, mp, &mp->next, 1);
+ if (rcvr_locks & ERTS_PROC_LOCK_MAIN)
+ erts_proc_sig_fetch(rcvr);
+
if (!(rcvr_locks & ERTS_PROC_LOCK_MSGQ))
erts_proc_unlock(rcvr, ERTS_PROC_LOCK_MSGQ);
@@ -371,6 +374,9 @@ queue_messages(Process* receiver,
LINK_MESSAGE(receiver, first, last, len);
+ if (receiver_locks & ERTS_PROC_LOCK_MAIN)
+ erts_proc_sig_fetch(receiver);
+
if (locked_msgq) {
erts_proc_unlock(receiver, ERTS_PROC_LOCK_MSGQ);
}