Skip to content

Commit f3093fa

Browse files
AllanZynekbenzie
authored andcommitted
Correct overhead formula (#18171)
Old: overhead = (shadow + redzone) / (user + shadow + redzone) New: overhead = (shadow + redzone) / user
1 parent d061703 commit f3093fa

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

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)