diff options
author | Rickard Green <[email protected]> | 2018-09-06 13:30:17 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2018-09-06 13:30:17 +0200 |
commit | 6f44c787bd543dbf0f0d7a02baae175e822d5802 (patch) | |
tree | b1094d047ee24f797b16625910758f721a20655c | |
parent | 1cca9ffa82cab9e64a7e0c58dd9c4ea04f62dc0b (diff) | |
parent | d4057c1c1ea711aaa8a39591bf38920f93530f5c (diff) | |
download | otp-6f44c787bd543dbf0f0d7a02baae175e822d5802.tar.gz otp-6f44c787bd543dbf0f0d7a02baae175e822d5802.tar.bz2 otp-6f44c787bd543dbf0f0d7a02baae175e822d5802.zip |
Merge pull request #1943 from max-au/handle_signals_before_dirty_gc
Fix an endless rescheduling loop when a process is executing process_…
OTP-15275
-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 9f3dfd6c37..0f7f1598fd 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; /* |