1From cccb968a5847b68e4a43214e72be0ebbe6a8be13 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 19 Mar 2021 20:09:10 -0700
4Subject: [PATCH] adjust thread stack sizes
5
6musl default stack is 128K as compared to glibc's 8M
7adjust the expecations accordingly
8
9Upstream-Status: Pending
10Signed-off-by: Khem Raj <raj.khem@gmail.com>
11Signed-off-by: Randy MacLeod <randy.macleod@windriver.com>
12
13---
14 base/threading/platform_thread_unittest.cc       | 2 +-
15 chrome/browser/shutdown_signal_handlers_posix.cc | 8 ++++++++
16 2 files changed, 9 insertions(+), 1 deletions(-)
17
18diff --git a/base/threading/platform_thread_unittest.cc b/base/threading/platform_thread_unittest.cc
19index 92d922f585..27f28a65ca 100644
20--- a/base/threading/platform_thread_unittest.cc
21+++ b/base/threading/platform_thread_unittest.cc
22@@ -526,7 +526,7 @@ TEST(PlatformThreadTest, GetDefaultThreadStackSize) {
23     ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) &&                \
24      !defined(THREAD_SANITIZER)) ||                                    \
25     (BUILDFLAG(IS_ANDROID) && !defined(ADDRESS_SANITIZER))
26-  EXPECT_EQ(0u, stack_size);
27+  EXPECT_EQ(2u << 20, stack_size);
28 #else
29   EXPECT_GT(stack_size, 0u);
30   EXPECT_LT(stack_size, 20u * (1 << 20));
31diff --git a/chrome/browser/shutdown_signal_handlers_posix.cc b/chrome/browser/shutdown_signal_handlers_posix.cc
32index b915ea58e5..293138ed0d 100644
33--- a/chrome/browser/shutdown_signal_handlers_posix.cc
34+++ b/chrome/browser/shutdown_signal_handlers_posix.cc
35@@ -188,11 +188,19 @@ void InstallShutdownSignalHandlers(
36   g_shutdown_pipe_read_fd = pipefd[0];
37   g_shutdown_pipe_write_fd = pipefd[1];
38 #if !defined(ADDRESS_SANITIZER)
39+# if defined(__GLIBC__)
40   const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
41+# else
42+  const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2 * 8; // match up musls 2k PTHREAD_STACK_MIN with glibcs 16k
43+# endif
44 #else
45+# if defined(__GLIBC__)
46   // ASan instrumentation bloats the stack frames, so we need to increase the
47   // stack size to avoid hitting the guard page.
48   const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
49+# else
50+  const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4 * 8; // match up musls 2k PTHREAD_STACK_MIN with glibcs 16k
51+# endif
52 #endif
53   ShutdownDetector* detector = new ShutdownDetector(
54       g_shutdown_pipe_read_fd, std::move(shutdown_callback), task_runner);
55