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 Change-Id: Ia99b67256b0e28a80095bd5cdae9068ea5e8b4a8
Loading
Please sign in to comment