aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2017-06-07 16:43:35 +0200
committerBjörn Gustavsson <[email protected]>2017-06-07 16:43:35 +0200
commit76137cbf49487e07bfcd72d5789bdfde7ef50a92 (patch)
tree1b928cf1c5d88792bd402d81ef5ebcec89190f12 /erts/emulator/beam
parent1ee59088c52ff18e3917d7f453a5947d0fe1cadd (diff)
parentacd8571b35756c3fdc389807c34d80c9d44435e7 (diff)
downloadotp-76137cbf49487e07bfcd72d5789bdfde7ef50a92.tar.gz
otp-76137cbf49487e07bfcd72d5789bdfde7ef50a92.tar.bz2
otp-76137cbf49487e07bfcd72d5789bdfde7ef50a92.zip
Merge branch 'bjorn/erts/fix-sys-task-cleanup'
* bjorn/erts/fix-sys-task-cleanup: Make sure that asynchronous replies are not lost
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r--erts/emulator/beam/erl_process.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index d4385e3987..285fa05d63 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -13932,7 +13932,11 @@ erts_continue_exit_process(Process *p)
erts_set_gc_state(p, 1);
state = erts_smp_atomic32_read_acqb(&p->state);
- if (state & ERTS_PSFLG_ACTIVE_SYS) {
+ if (state & ERTS_PSFLG_ACTIVE_SYS
+#ifdef ERTS_DIRTY_SCHEDULERS
+ || p->dirty_sys_tasks
+#endif
+ ) {
if (cleanup_sys_tasks(p, state, CONTEXT_REDS) >= CONTEXT_REDS/2)
goto yield;
}