1From 2a8989439cf4e0fa51e03ec217236f6845b54a93 Mon Sep 17 00:00:00 2001 2From: Martin Jansa <Martin.Jansa@gmail.com> 3Date: Thu, 2 Sep 2021 14:58:18 +0200 4Subject: [PATCH] Bug-1721326: Fix build with glibc-2.34 5 6Upstream-Status: Backport [https://hg.mozilla.org/mozilla-central/rev/2ec5d7b0bc885bc0c686f7a7a5bd9d1c4bc4df9b] 7Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> 8--- 9 js/xpconnect/src/XPCJSContext.cpp | 14 +++++++++----- 10 1 file changed, 9 insertions(+), 5 deletions(-) 11 12diff --git a/js/xpconnect/src/XPCJSContext.cpp b/js/xpconnect/src/XPCJSContext.cpp 13index b84ed7001e..783b891457 100644 14--- a/js/xpconnect/src/XPCJSContext.cpp 15+++ b/js/xpconnect/src/XPCJSContext.cpp 16@@ -84,13 +84,10 @@ using namespace xpc; 17 using namespace JS; 18 using mozilla::dom::AutoEntryScript; 19 20-// The watchdog thread loop is pretty trivial, and should not require much stack 21-// space to do its job. So only give it 32KiB or the platform minimum. 22+// We will clamp to reasonable values if this isn't set. 23 #if !defined(PTHREAD_STACK_MIN) 24 # define PTHREAD_STACK_MIN 0 25 #endif 26-static constexpr size_t kWatchdogStackSize = 27- PTHREAD_STACK_MIN < 32 * 1024 ? 32 * 1024 : PTHREAD_STACK_MIN; 28 29 static void WatchdogMain(void* arg); 30 class Watchdog; 31@@ -159,12 +156,19 @@ class Watchdog { 32 { 33 AutoLockWatchdog lock(this); 34 35+ // The watchdog thread loop is pretty trivial, and should not 36+ // require much stack space to do its job. So only give it 32KiB 37+ // or the platform minimum. On modern Linux libc this might resolve to 38+ // a runtime call. 39+ size_t watchdogStackSize = PTHREAD_STACK_MIN; 40+ watchdogStackSize = std::max<size_t>(32 * 1024, watchdogStackSize); 41+ 42 // Gecko uses thread private for accounting and has to clean up at thread 43 // exit. Therefore, even though we don't have a return value from the 44 // watchdog, we need to join it on shutdown. 45 mThread = PR_CreateThread(PR_USER_THREAD, WatchdogMain, this, 46 PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD, 47- PR_JOINABLE_THREAD, kWatchdogStackSize); 48+ PR_JOINABLE_THREAD, watchdogStackSize); 49 if (!mThread) { 50 MOZ_CRASH("PR_CreateThread failed!"); 51 } 52