[compiler-rt] [msan] Increase kNumStackOriginDescrs constant (PR #92838)
Thurston Dang via llvm-commits
llvm-commits at lists.llvm.org
Tue May 21 11:26:22 PDT 2024
https://github.com/thurstond updated https://github.com/llvm/llvm-project/pull/92838
>From 3d6395048b7a536bf9f2693f436ef7e18aaa303f Mon Sep 17 00:00:00 2001
From: Thurston Dang <thurston at google.com>
Date: Mon, 20 May 2024 23:56:02 +0000
Subject: [PATCH 1/2] [msan] Increase kNumStackOriginDescrs constant
This increases the constant size of kNumStackOriginDescrs to
64M (1GB of BSS across two arrays), which ought to be enough for
anybody.
This is the easier alternative suggested by eugenis@ in
https://github.com/llvm/llvm-project/pull/92826.
---
compiler-rt/lib/msan/msan.cpp | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/compiler-rt/lib/msan/msan.cpp b/compiler-rt/lib/msan/msan.cpp
index a2fc27de1901b..8bef6812f21c2 100644
--- a/compiler-rt/lib/msan/msan.cpp
+++ b/compiler-rt/lib/msan/msan.cpp
@@ -100,7 +100,13 @@ int msan_report_count = 0;
// Array of stack origins.
// FIXME: make it resizable.
-static const uptr kNumStackOriginDescrs = 1024 * 1024;
+// Although BSS memory doesn't cost anything until used, it is limited to 2GB
+// in some configurations (e.g., relocation R_X86_64_PC32 out of range:
+// 8600110908 is not in [-2147483648, 2147483647]; references section '.bss')
+// hence kNumStackOriginDescrs is limited to roughly 2GB / sizeof(uptr) / 2
+// == 128M per array (StackOriginDescr, StackOriginPC). We set it at 64M each
+// in case other parts of MSan want more BSS space in the future.
+static const uptr kNumStackOriginDescrs = 64 * 1024 * 1024;
static const char *StackOriginDescr[kNumStackOriginDescrs];
static uptr StackOriginPC[kNumStackOriginDescrs];
static atomic_uint32_t NumStackOriginDescrs;
>From 45d0496380c7ea98a98777679b41839a94145c4d Mon Sep 17 00:00:00 2001
From: Thurston Dang <thurston at google.com>
Date: Tue, 21 May 2024 18:25:50 +0000
Subject: [PATCH 2/2] Change constant to 4M per Evgenii's feedback
---
compiler-rt/lib/msan/msan.cpp | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/compiler-rt/lib/msan/msan.cpp b/compiler-rt/lib/msan/msan.cpp
index 8bef6812f21c2..7a152910193e0 100644
--- a/compiler-rt/lib/msan/msan.cpp
+++ b/compiler-rt/lib/msan/msan.cpp
@@ -101,12 +101,10 @@ int msan_report_count = 0;
// Array of stack origins.
// FIXME: make it resizable.
// Although BSS memory doesn't cost anything until used, it is limited to 2GB
-// in some configurations (e.g., relocation R_X86_64_PC32 out of range:
-// 8600110908 is not in [-2147483648, 2147483647]; references section '.bss')
-// hence kNumStackOriginDescrs is limited to roughly 2GB / sizeof(uptr) / 2
-// == 128M per array (StackOriginDescr, StackOriginPC). We set it at 64M each
-// in case other parts of MSan want more BSS space in the future.
-static const uptr kNumStackOriginDescrs = 64 * 1024 * 1024;
+// in some configurations (e.g., "relocation R_X86_64_PC32 out of range:
+// ... is not in [-2147483648, 2147483647]; references section '.bss'").
+// We use kNumStackOriginDescrs * (sizeof(char*) + sizeof(uptr)) == 64MB.
+static const uptr kNumStackOriginDescrs = 4 * 1024 * 1024;
static const char *StackOriginDescr[kNumStackOriginDescrs];
static uptr StackOriginPC[kNumStackOriginDescrs];
static atomic_uint32_t NumStackOriginDescrs;
More information about the llvm-commits
mailing list