aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2018-09-06 13:30:17 +0200
committerGitHub <[email protected]>2018-09-06 13:30:17 +0200
commit6f44c787bd543dbf0f0d7a02baae175e822d5802 (patch)
treeb1094d047ee24f797b16625910758f721a20655c /erts/emulator
parent1cca9ffa82cab9e64a7e0c58dd9c4ea04f62dc0b (diff)
parentd4057c1c1ea711aaa8a39591bf38920f93530f5c (diff)
downloadotp-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
Diffstat (limited to 'erts/emulator')
-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 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;
/*