diff options
author | Abseil Team <absl-team@google.com> | 2024-03-28 16:08:19 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2024-03-28 16:09:17 -0700 |
commit | 00f8c3996718913e40aa2699cba1489df1760450 (patch) | |
tree | 1f738f9b4cde679f28cfe3559b6ec95fd6af0e7b | |
parent | 160d390608db56f11cbd29bd6b8938661dee525c (diff) | |
download | abseil-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.inc | 2 |
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); } |