aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2016-09-05 19:18:08 +0200
committerRickard Green <[email protected]>2016-09-05 19:21:41 +0200
commit2e4812fe7082364ff5bb423b3365b0e6564e5db8 (patch)
tree4fb5b16526641649644a1b87c72a4e0053a2f825 /erts/emulator
parent6d4001de141a00b3bf37b8f7b24c5bde2b4f4015 (diff)
downloadotp-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.
Diffstat (limited to 'erts/emulator')
-rw-r--r--erts/emulator/beam/erl_thr_progress.c1
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);