diff options
author | Björn Gustavsson <[email protected]> | 2017-06-07 16:43:35 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2017-06-07 16:43:35 +0200 |
commit | 76137cbf49487e07bfcd72d5789bdfde7ef50a92 (patch) | |
tree | 1b928cf1c5d88792bd402d81ef5ebcec89190f12 /erts/emulator/beam/erl_process.c | |
parent | 1ee59088c52ff18e3917d7f453a5947d0fe1cadd (diff) | |
parent | acd8571b35756c3fdc389807c34d80c9d44435e7 (diff) | |
download | otp-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/erl_process.c')
-rw-r--r-- | erts/emulator/beam/erl_process.c | 6 |
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; } |