diff options
author | Christopher Ferris <cferris@google.com> | 2023-05-08 19:12:32 -0700 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2023-05-09 15:40:57 -0700 |
commit | 526027df2d62432db3cfce3a61356369ed13cf5e (patch) | |
tree | f034e94e3ef5d580041595b4024fdfca8e0f36ca /compiler-rt | |
parent | 41429523521cff12124ec7ec88c92dfe8547a13e (diff) | |
download | llvm-526027df2d62432db3cfce3a61356369ed13cf5e.tar.gz |
[scudo] Change secondary StatsAllocated update
In the secondary allocation routine, the StatsAllocated stat is
increased by BlockSize. However, in the deallocate routine, the
stat subtract uses CommitSize. CommitSize can be bigger than BlockSize
so this can lead to a negative calculated stat. Since the stats
are not guaranteed to be completely accurate, just add CommitSize
during allocation.
Reviewed By: Chia-hungDuan
Differential Revision: https://reviews.llvm.org/D150169
Diffstat (limited to 'compiler-rt')
-rw-r--r-- | compiler-rt/lib/scudo/standalone/secondary.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/compiler-rt/lib/scudo/standalone/secondary.h b/compiler-rt/lib/scudo/standalone/secondary.h index 935b48914d00..94009f5fa9c6 100644 --- a/compiler-rt/lib/scudo/standalone/secondary.h +++ b/compiler-rt/lib/scudo/standalone/secondary.h @@ -522,13 +522,12 @@ void *MapAllocator<Config>::allocate(Options Options, uptr Size, uptr Alignment, if (FillContents && !Zeroed) memset(Ptr, FillContents == ZeroFill ? 0 : PatternFillByte, BlockEnd - PtrInt); - const uptr BlockSize = BlockEnd - HInt; { ScopedLock L(Mutex); InUseBlocks.push_back(H); - AllocatedBytes += BlockSize; + AllocatedBytes += H->CommitSize; NumberOfAllocs++; - Stats.add(StatAllocated, BlockSize); + Stats.add(StatAllocated, H->CommitSize); Stats.add(StatMapped, H->MemMap.getCapacity()); } return Ptr; |