From 1641a6ea810f1406bb938e66ad3a9e8dec7884b9 Mon Sep 17 00:00:00 2001 From: Roman Savchenko Date: Fri, 27 Sep 2024 18:14:48 +0200 Subject: [PATCH 1/2] Decrease SetThreadStackGuarantee value --- src/backends/sentry_backend_crashpad.cpp | 2 +- src/sentry_os.c | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/backends/sentry_backend_crashpad.cpp b/src/backends/sentry_backend_crashpad.cpp index 6941f95c0..e5723b4c2 100644 --- a/src/backends/sentry_backend_crashpad.cpp +++ b/src/backends/sentry_backend_crashpad.cpp @@ -375,7 +375,7 @@ crashpad_backend_startup( } } -#ifdef SENTRY_PLATFORM_WINDOWS +#if defined(SENTRY_PLATFORM_WINDOWS) && !defined(SENTRY_BUILD_SHARED) sentry__reserve_thread_stack(); #endif diff --git a/src/sentry_os.c b/src/sentry_os.c index 66434863b..bc3d5f12e 100644 --- a/src/sentry_os.c +++ b/src/sentry_os.c @@ -140,12 +140,18 @@ sentry__get_os_context(void) void sentry__reserve_thread_stack(void) { - const unsigned long expected_stack_size = 64 * 1024; + const unsigned long page_size = 4 * 1024; + // 1 page for possible guard region + // 1 page for OS kernel32!RaiseException + // 1 page for possible debug infrastructure + // 1 page for handler + const unsigned long expected_stack_size = 4 * page_size; unsigned long stack_size = 0; - SetThreadStackGuarantee(&stack_size); - if (stack_size < expected_stack_size) { - stack_size = expected_stack_size; - SetThreadStackGuarantee(&stack_size); + if (SetThreadStackGuarantee(&stack_size)) { + if (stack_size < expected_stack_size) { + stack_size = expected_stack_size; + SetThreadStackGuarantee(&stack_size); + } } } From 88c7b35dfd9c20140b0c1a4bd8358ca333c51b33 Mon Sep 17 00:00:00 2001 From: Roman Savchenko Date: Wed, 2 Oct 2024 11:21:53 +0200 Subject: [PATCH 2/2] Add changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96bed61b4..a3ad3a464 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Unreleased + +- Decrease SetThreadStackGuarantee value ([#1044](https://github.com/getsentry/sentry-native/pull/1044)) + ## 0.7.10 **Fixes**: