From 3b15d20eea0af28f1888b3acf2ff1afc2a94cff2 Mon Sep 17 00:00:00 2001 From: Jose Nino Date: Tue, 28 Sep 2021 11:30:08 -0700 Subject: [PATCH 1/2] signal action: fully disable sigaltstack on Apple Signed-off-by: Jose Nino --- source/common/signal/signal_action.cc | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/source/common/signal/signal_action.cc b/source/common/signal/signal_action.cc index 77d5053f14bec..a771f485f8fd8 100644 --- a/source/common/signal/signal_action.cc +++ b/source/common/signal/signal_action.cc @@ -82,13 +82,11 @@ void SignalAction::installSigHandlers() { } void SignalAction::removeSigHandlers() { -#if defined(__APPLE__) - // ss_flags contains SS_DISABLE, but Darwin still checks the size, contrary to the man page - if (previous_altstack_.ss_size < MINSIGSTKSZ) { - previous_altstack_.ss_size = MINSIGSTKSZ; - } -#endif +// sigaltstack and backtrace() are incompatible on Apple platforms +// https://reviews.llvm.org/D28265 +#if !defined(__APPLE__) RELEASE_ASSERT(sigaltstack(&previous_altstack_, nullptr) == 0, ""); +#endif int hidx = 0; for (const auto& sig : FATAL_SIGS) { From e649234140ede098b7b655fed3680c52de355d13 Mon Sep 17 00:00:00 2001 From: Jose Nino Date: Tue, 28 Sep 2021 12:40:28 -0700 Subject: [PATCH 2/2] fix warning Signed-off-by: Jose Nino --- source/common/signal/signal_action.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/common/signal/signal_action.h b/source/common/signal/signal_action.h index 79bc2ab30c765..82ae486cc09f3 100644 --- a/source/common/signal/signal_action.h +++ b/source/common/signal/signal_action.h @@ -128,7 +128,11 @@ class SignalAction : NonCopyable { void unmapStackMemory(); char* altstack_{}; std::array previous_handlers_; +// sigaltstack and backtrace() are incompatible on Apple platforms +// https://reviews.llvm.org/D28265 +#if !defined(__APPLE__) stack_t previous_altstack_; +#endif }; } // namespace Envoy