Skip to content

Commit 871b5b1

Browse files
authored
[DeviceASAN] Correct overhead formula (#18171)
Old: overhead = (shadow + redzone) / (user + shadow + redzone) New: overhead = (shadow + redzone) / user
1 parent d27d749 commit 871b5b1

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

unified-runtime/source/loader/layers/sanitizer/asan/asan_statistics.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,13 @@ void AsanStats::UpdateShadowFreed(uptr ShadowSize) {
9292
}
9393

9494
void AsanStats::UpdateOverhead() {
95-
auto TotalSize = UsmMalloced + ShadowMalloced;
96-
if (TotalSize == 0) {
95+
assert(UsmMalloced >= UsmMallocedRedzones);
96+
auto UserSize = UsmMalloced - UsmMallocedRedzones;
97+
if (UserSize == 0) {
9798
return;
9899
}
99-
auto NewOverhead = (ShadowMalloced + UsmMallocedRedzones) / (double)TotalSize;
100+
// Overhead = (Shadow + Redzone) / User
101+
auto NewOverhead = (ShadowMalloced + UsmMallocedRedzones) / (double)UserSize;
100102
Overhead = std::max(Overhead, NewOverhead);
101103
}
102104

0 commit comments

Comments
 (0)