[compiler-rt] [Asan] Ensure minimum stack size 128KB in ThreadedStressStackReuseTest (PR #165198)

via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 26 21:23:41 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-compiler-rt-sanitizer

Author: Riyaz Ahmad (riyaz86a)

<details>
<summary>Changes</summary>

Asan test `ThreadedStressStackReuseTest ` fails on AIX due to smaller default thread stack size. Set thread stack size to a minimum of 128KB to ensure reliable test behavior across platforms (platforms with smaller default thread stack size).

---
Full diff: https://github.com/llvm/llvm-project/pull/165198.diff


1 Files Affected:

- (modified) compiler-rt/lib/asan/tests/asan_test.cpp (+16-1) 


``````````diff
diff --git a/compiler-rt/lib/asan/tests/asan_test.cpp b/compiler-rt/lib/asan/tests/asan_test.cpp
index 2d23a12cc6ae2..4fc5c978f82a5 100644
--- a/compiler-rt/lib/asan/tests/asan_test.cpp
+++ b/compiler-rt/lib/asan/tests/asan_test.cpp
@@ -1115,15 +1115,30 @@ TEST(AddressSanitizer, StressStackReuseTest) {
   LotsOfStackReuse();
 }
 
+// On some platform (ex: AIX), the default thread stack size (~96 KB) is
+// insufficient for this test and can lead to stack overflows. The test
+// has been updated to accomodate platforms with smaller default thread
+// stack sizes.
+#define MIN_STACK_SIZE (128 * 1024)  //  Minimum stack size to use: 128 KB
 TEST(AddressSanitizer, ThreadedStressStackReuseTest) {
   const int kNumThreads = 20;
   pthread_t t[kNumThreads];
+  size_t curStackSize = 0;
+  pthread_attr_t attr;
+  pthread_attr_init(&attr);
+  // Get the current (default) thread stack size
+  pthread_attr_getstacksize(&attr, &curStackSize);
+  if (curStackSize < MIN_STACK_SIZE) {
+    int rc = pthread_attr_setstacksize(&attr, MIN_STACK_SIZE);
+    ASSERT_EQ(0, rc);
+  }
   for (int i = 0; i < kNumThreads; i++) {
-    PTHREAD_CREATE(&t[i], 0, (void* (*)(void *x))LotsOfStackReuse, 0);
+    PTHREAD_CREATE(&t[i], &attr, (void* (*)(void *x))LotsOfStackReuse, 0);
   }
   for (int i = 0; i < kNumThreads; i++) {
     PTHREAD_JOIN(t[i], 0);
   }
+  pthread_attr_destroy(&attr);
 }
 
 // pthread_exit tries to perform unwinding stuff that leads to dlopen'ing

``````````

</details>


https://github.com/llvm/llvm-project/pull/165198


More information about the llvm-commits mailing list