diff options
author | Sverker Eriksson <[email protected]> | 2017-09-21 19:21:18 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2017-11-15 20:10:33 +0100 |
commit | b17db5ae892a8b9c48f8f94f7219c60fe122f629 (patch) | |
tree | 2fdac0d9dfff92e57b09b158ed0b5b3cef277f22 /erts/etc/common/escript.c | |
parent | d332dcea887f9f13726bb31c1b70ae7c4c98cade (diff) | |
download | otp-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/etc/common/escript.c')
0 files changed, 0 insertions, 0 deletions