Fix region space when used with SetLengthToUsableSizeVisitor.
The region space relies on obj->SizeOf for some of its logic. By having SetLengthToUsableSizeVisitor "change" the SizeOf what's being allocated. The bug happens during RegionSpace::ClearFromSpace: for unevac regions we iterate over following regions. If LiveBytes != Top() - Begin() (which happen for large allocations using SetLengthToUsableSizeVisitor), we break the loop. The next region to analyze is a large tail, and we see LiveBytes() == 0 (tails apparently always have live bytes == 0), the code is then happy to release the large tail, even though the large object is still live. bug: 37187694 bug: 62889232 Test: 659-unpadded-array (cherry picked from commit 4b361a87) Change-Id: Ia5c156a6969aad0b0c2ea2a4b7a0abdfa4088df6
Loading
Please sign in to comment