aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/io.c
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2015-09-22 14:01:54 +0200
committerSverker Eriksson <[email protected]>2015-10-01 19:07:26 +0200
commit933bb51d40bcd665602fe4ece951b3111c301e74 (patch)
treed7d2df613f60842857ebfd2aecde6c89356e8b47 /erts/emulator/beam/io.c
parent5e229f3d7591b0df7d6d475065e1dc2d5273a148 (diff)
downloadotp-933bb51d40bcd665602fe4ece951b3111c301e74.tar.gz
otp-933bb51d40bcd665602fe4ece951b3111c301e74.tar.bz2
otp-933bb51d40bcd665602fe4ece951b3111c301e74.zip
erts: Fix confusion of callbacks destroying_mbc() vs remove_mbc()
Problem #1 Goodfit was crippled by the fact that destroying_mbc() was called _before_ the carriers was unlinked from mbc_list. Problem #2 destroying_mbc() was called for carriers that later could be resurrected from dc_list without a matching call to creating_mbc(). This was mostly a practical problem for the new test case alloc_SUITE:migration that use the callbacks to create/destroy a mutex. Solution: destroying_mbc() is now only called just before a carrier is destroyed (deallocated or put in mseg cache). remove_mbc() is called both (like before) when inserted into cpool but now also when last block is freed and mbc is scheduled for destruction but may later be resurrected from dc_list.
Diffstat (limited to 'erts/emulator/beam/io.c')
0 files changed, 0 insertions, 0 deletions