aboutsummaryrefslogtreecommitdiffstats
path: root/erts/lib_src/pthread/ethread.c
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2017-09-21 19:21:18 +0200
committerSverker Eriksson <[email protected]>2017-11-15 20:10:33 +0100
commitb17db5ae892a8b9c48f8f94f7219c60fe122f629 (patch)
tree2fdac0d9dfff92e57b09b158ed0b5b3cef277f22 /erts/lib_src/pthread/ethread.c
parentd332dcea887f9f13726bb31c1b70ae7c4c98cade (diff)
downloadotp-b17db5ae892a8b9c48f8f94f7219c60fe122f629.tar.gz
otp-b17db5ae892a8b9c48f8f94f7219c60fe122f629.tar.bz2
otp-b17db5ae892a8b9c48f8f94f7219c60fe122f629.zip
erts: Fix bug in DistEntry refc dance
to handle "lookup without refc++" correctly which was introduced in 4dcb2ae7810a507b701a30072b2f514cab7ebbdb. When decrementing refc to zero (in try_delete or prepare_try_delete) we must always wait thread progress to make sure no thread has done lookup without refc++ and is just about to do refc++ and thereby revive the DistEntry. That is, we wait for a potential other thread to either do refc++ or drop its pointer to the DistEntry. And if that other thread does refc++ (in erts_ref_dist_entry) it must also do the extra refc++ for the scheduled pending delete.
Diffstat (limited to 'erts/lib_src/pthread/ethread.c')
0 files changed, 0 insertions, 0 deletions