diff options
author | Rickard Green <[email protected]> | 2016-09-05 19:18:08 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2016-09-05 19:21:41 +0200 |
commit | 2e4812fe7082364ff5bb423b3365b0e6564e5db8 (patch) | |
tree | 4fb5b16526641649644a1b87c72a4e0053a2f825 | |
parent | 6d4001de141a00b3bf37b8f7b24c5bde2b4f4015 (diff) | |
download | otp-2e4812fe7082364ff5bb423b3365b0e6564e5db8.tar.gz otp-2e4812fe7082364ff5bb423b3365b0e6564e5db8.tar.bz2 otp-2e4812fe7082364ff5bb423b3365b0e6564e5db8.zip |
Fix erts_thr_progress_unmanaged_delay()
Thread progress leader update did not cache current unmanaged index
when waiting for unmanaged threads. This caused
erts_thr_progress_unmanaged_delay() to stop working until a new leader
took over.
-rw-r--r-- | erts/emulator/beam/erl_thr_progress.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_thr_progress.c b/erts/emulator/beam/erl_thr_progress.c index 664c479eb6..83cdd56ead 100644 --- a/erts/emulator/beam/erl_thr_progress.c +++ b/erts/emulator/beam/erl_thr_progress.c @@ -699,6 +699,7 @@ leader_update(ErtsThrPrgrData *tpd) tpd->leader_state.chk_next_ix = no_managed; erts_atomic32_set_nob(&intrnl->misc.data.umrefc_ix.current, (erts_aint32_t) new_umrefc_ix); + tpd->leader_state.umrefc_ix.current = new_umrefc_ix; ETHR_MEMBAR(ETHR_StoreLoad); refc = erts_atomic_read_nob(&intrnl->umrefc[umrefc_ix].refc); ASSERT(refc >= 0); |