diff options
author | Erlang/OTP <[email protected]> | 2018-09-05 20:53:22 +0200 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2018-09-05 20:53:22 +0200 |
commit | f47b61279e884586707f09d2bdd2f411434801da (patch) | |
tree | 54ed7bd942fa07dc3d1de3b9d88b89f63b6264cf | |
parent | f7012b7a731924193cf05fc77b103e89bd0fcbfb (diff) | |
parent | 93ad08d8c6d6a9875a10b33633aca52de5d3c59b (diff) | |
download | otp-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.c | 2 |
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; /* |