修改pods
This commit is contained in:
@@ -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);
|
||||
}
|
||||
@@ -122,13 +124,6 @@ static void **NextStackFrame(void **old_frame_pointer, const void *uc,
|
||||
if (pre_signal_frame_pointer >= old_frame_pointer) {
|
||||
new_frame_pointer = pre_signal_frame_pointer;
|
||||
}
|
||||
// Check that alleged frame pointer is actually readable. This is to
|
||||
// prevent "double fault" in case we hit the first fault due to e.g.
|
||||
// stack corruption.
|
||||
if (!absl::debugging_internal::AddressIsReadable(
|
||||
new_frame_pointer))
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -136,6 +131,14 @@ static void **NextStackFrame(void **old_frame_pointer, const void *uc,
|
||||
if ((reinterpret_cast<uintptr_t>(new_frame_pointer) & 7) != 0)
|
||||
return nullptr;
|
||||
|
||||
// Check that alleged frame pointer is actually readable. This is to
|
||||
// prevent "double fault" in case we hit the first fault due to e.g.
|
||||
// stack corruption.
|
||||
if (!absl::debugging_internal::AddressIsReadable(
|
||||
new_frame_pointer))
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Only check the size if both frames are in the same stack.
|
||||
if (InsideSignalStack(new_frame_pointer, stack_info) ==
|
||||
InsideSignalStack(old_frame_pointer, stack_info)) {
|
||||
|
||||
Reference in New Issue
Block a user