aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSverker Eriksson <sverker@erlang.org>2016-02-08 16:41:25 +0100
committerSverker Eriksson <sverker@erlang.org>2016-02-08 16:41:25 +0100
commit0540384c6bc28be88b2e6d0c43f5e65974885738 (patch)
tree10a6e12519f0e3608e19d652dca853d76f9d6840
parent98cc6495f768e4d191ac96eff1b2e830cfffd3f2 (diff)
parent52738d8bee488c262cf514ce4df49e87dfa47bc3 (diff)
downloadotp-0540384c6bc28be88b2e6d0c43f5e65974885738.tar.gz
otp-0540384c6bc28be88b2e6d0c43f5e65974885738.tar.bz2
otp-0540384c6bc28be88b2e6d0c43f5e65974885738.zip
Merge branch 'sverk/proc-exiting-timer-race/OTP-13245' into maint
* sverk/proc-exiting-timer-race/OTP-13245: erts: Fix race between receive timeout and exit signal
-rw-r--r--erts/emulator/beam/erl_process.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index 8fd1b5c0c3..b24f26138c 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -9699,6 +9699,8 @@ Process *schedule(Process *p, int calls)
erts_smp_proc_lock(p, ERTS_PROC_LOCK_MAIN|ERTS_PROC_LOCK_STATUS);
+ state = erts_smp_atomic32_read_nob(&p->state);
+
if (erts_sched_stat.enabled) {
int prio;
UWord old = ERTS_PROC_SCHED_ID(p,