aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_async.c
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2018-06-07 20:15:07 +0200
committerSverker Eriksson <[email protected]>2018-06-07 20:15:07 +0200
commit6ccf40d1b46a3e880134994bd71836f15a3358d4 (patch)
tree006f5fa90b8ee49ef2a146c1e40ad1fa646f0368 /erts/emulator/beam/erl_async.c
parenta113f6117fd696ea6f84ed754055b4ec97a7ccb2 (diff)
downloadotp-6ccf40d1b46a3e880134994bd71836f15a3358d4.tar.gz
otp-6ccf40d1b46a3e880134994bd71836f15a3358d4.tar.bz2
otp-6ccf40d1b46a3e880134994bd71836f15a3358d4.zip
erts: Fix race between ets table deletion and auto-unfix
Bug exists since ets-refs were introduced in 20.0 0d6dc895744c34c9c52fd42f4801a8a941864ae3. Problem: 1. Process A fixates table T. 2. Process B starts deleting table T (either by ets:delete or exit) and does tid_clear(). 3. Process A exits and does proc_cleanup_fixed_table() and get NULL from btid2tab() and deallocates DbFixation. 4. Process B continues deleting table in free_fixations_locked() and finds the deallocated DbFixation in the fixing_procs tree. Solution: Wait with tid_clear() until after free_fixations_locked() has traversed the fixing_procs tree.
Diffstat (limited to 'erts/emulator/beam/erl_async.c')
0 files changed, 0 insertions, 0 deletions