aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2024-03-28 16:08:19 -0700
committerCopybara-Service <copybara-worker@google.com>2024-03-28 16:09:17 -0700
commit00f8c3996718913e40aa2699cba1489df1760450 (patch)
tree1f738f9b4cde679f28cfe3559b6ec95fd6af0e7b
parent160d390608db56f11cbd29bd6b8938661dee525c (diff)
downloadabseil-00f8c3996718913e40aa2699cba1489df1760450.tar.gz
abseil-00f8c3996718913e40aa2699cba1489df1760450.tar.bz2
abseil-00f8c3996718913e40aa2699cba1489df1760450.zip
Only check if the frame pointer is inside a signal stack with known bounds
This function previously returned true whenever the signal stack had unknown bounds, that is obviously incorrect. PiperOrigin-RevId: 620084964 Change-Id: I3821730b45773300569b9cbdb7e72442ed109d04
-rw-r--r--absl/debugging/internal/stacktrace_aarch64-inl.inc2
1 files changed, 2 insertions, 0 deletions
diff --git a/absl/debugging/internal/stacktrace_aarch64-inl.inc b/absl/debugging/internal/stacktrace_aarch64-inl.inc
index 1e07e042..b123479b 100644
--- a/absl/debugging/internal/stacktrace_aarch64-inl.inc
+++ b/absl/debugging/internal/stacktrace_aarch64-inl.inc
@@ -89,6 +89,8 @@ struct StackInfo {
static bool InsideSignalStack(void** ptr, const StackInfo* stack_info) {
uintptr_t comparable_ptr = reinterpret_cast<uintptr_t>(ptr);
+ if (stack_info->sig_stack_high == kUnknownStackEnd)
+ return false;
return (comparable_ptr >= stack_info->sig_stack_low &&
comparable_ptr < stack_info->sig_stack_high);
}