diff options
author | Rickard Green <[email protected]> | 2018-04-25 13:00:36 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2018-04-25 13:13:44 +0200 |
commit | 630d7e7df458490ae4d5c263e096851e14349537 (patch) | |
tree | 4dfcd170a2a9d16ce2b7ecfab3106893aab6e4fc /erts/emulator/beam/erl_message.c | |
parent | 9974f24df0cd217aced27c462ccea02a93c453ae (diff) | |
download | otp-630d7e7df458490ae4d5c263e096851e14349537.tar.gz otp-630d7e7df458490ae4d5c263e096851e14349537.tar.bz2 otp-630d7e7df458490ae4d5c263e096851e14349537.zip |
Restore merge of signal queues in queue_messages() if main lock is held
Diffstat (limited to 'erts/emulator/beam/erl_message.c')
-rw-r--r-- | erts/emulator/beam/erl_message.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_message.c b/erts/emulator/beam/erl_message.c index 541d2e8ad1..deca426543 100644 --- a/erts/emulator/beam/erl_message.c +++ b/erts/emulator/beam/erl_message.c @@ -311,6 +311,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); @@ -376,6 +379,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); } |