diff options
author | Rickard Green <[email protected]> | 2018-04-27 15:09:31 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2018-04-27 15:09:31 +0200 |
commit | 53ef019f6b9c9ab29fdfb25aeb2874af7dcb6e16 (patch) | |
tree | 81b08375cfac119fa66c34248f8a39d4d2bd7608 /erts/emulator/beam/erl_proc_sig_queue.c | |
parent | 3669d6cf82f392cf66d6bcf880259edd8edf7be1 (diff) | |
parent | 5d2d5678b06770275ce20e333166e4269150f138 (diff) | |
download | otp-53ef019f6b9c9ab29fdfb25aeb2874af7dcb6e16.tar.gz otp-53ef019f6b9c9ab29fdfb25aeb2874af7dcb6e16.tar.bz2 otp-53ef019f6b9c9ab29fdfb25aeb2874af7dcb6e16.zip |
Merge branch 'rickard/process_info/OTP-14966'
* rickard/process_info/OTP-14966:
Fix scheduled process_info() 'status' request
Fix handling of process-info requests in receive
Diffstat (limited to 'erts/emulator/beam/erl_proc_sig_queue.c')
-rw-r--r-- | erts/emulator/beam/erl_proc_sig_queue.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/erts/emulator/beam/erl_proc_sig_queue.c b/erts/emulator/beam/erl_proc_sig_queue.c index a2e6f1d39d..5165cd22a5 100644 --- a/erts/emulator/beam/erl_proc_sig_queue.c +++ b/erts/emulator/beam/erl_proc_sig_queue.c @@ -2558,18 +2558,6 @@ handle_process_info(Process *c_p, ErtsSigRecvTracing *tracing, *c_p->sig_qs.last = NULL; } - if (!pisig->common.specific.next) { - /* - * No more signals in middle queue... - * - * Process-info 'status' needs sig-q - * process flag to be updated in order - * to show accurate result... - */ - erts_atomic32_read_band_nob(&c_p->state, - ~ERTS_PSFLG_SIG_Q); - } - #ifdef ERTS_PROC_SIG_HARD_DEBUG_SIGQ_MSG_LEN { Sint len; @@ -2583,8 +2571,20 @@ handle_process_info(Process *c_p, ErtsSigRecvTracing *tracing, #endif } } - if (is_alive) + if (is_alive) { + if (!pisig->common.specific.next) { + /* + * No more signals in middle queue... + * + * Process-info 'status' needs sig-q + * process flag to be updated in order + * to show accurate result... + */ + erts_atomic32_read_band_nob(&c_p->state, + ~ERTS_PSFLG_SIG_Q); + } remove_nm_sig(c_p, sig, next_nm_sig); + } rp = erts_proc_lookup(pisig->requester); ASSERT(c_p != rp); |