aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2018-09-05 20:53:22 +0200
committerErlang/OTP <[email protected]>2018-09-05 20:53:22 +0200
commitf47b61279e884586707f09d2bdd2f411434801da (patch)
tree54ed7bd942fa07dc3d1de3b9d88b89f63b6264cf
parentf7012b7a731924193cf05fc77b103e89bd0fcbfb (diff)
parent93ad08d8c6d6a9875a10b33633aca52de5d3c59b (diff)
downloadotp-f47b61279e884586707f09d2bdd2f411434801da.tar.gz
otp-f47b61279e884586707f09d2bdd2f411434801da.tar.bz2
otp-f47b61279e884586707f09d2bdd2f411434801da.zip
Merge branch 'max-au/handle_signals_before_dirty_gc/OTP-15275' into maint-21
* max-au/handle_signals_before_dirty_gc/OTP-15275: Fix an endless rescheduling loop when a process is executing process_info(self(), ...)
-rw-r--r--erts/emulator/beam/erl_process.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index 7a9ef3c1de..d5bd17ff3e 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -9641,7 +9641,7 @@ Process *erts_schedule(ErtsSchedulerData *esdp, Process *p, int calls)
if (state & ERTS_PSFLG_RUNNING_SYS) {
if (state & (ERTS_PSFLG_SIG_Q|ERTS_PSFLG_SIG_IN_Q)) {
int local_only = (!!(p->flags & F_LOCAL_SIGS_ONLY)
- & !(state & ERTS_PSFLG_SUSPENDED));
+ & !(state & (ERTS_PSFLG_SUSPENDED|ERTS_PSFLGS_DIRTY_WORK)));
if (!local_only | !!(state & ERTS_PSFLG_SIG_Q)) {
int sig_reds;
/*