mirror of
https://github.com/chromium/crashpad.git
synced 2024-12-26 06:31:50 +08:00
Mac: more robust __crash_info on 13+
It looks like macOS 13 only *sometimes* puts __crash_info in __DATA_DIRTY. Instead of splitting by version check, let's just look in __DATA_DIRTY if we can't find it in __DATA. Bug: chromium:1372165 Change-Id: I99d2e759c66841d982039449e83f8658259d7ed1 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4197706 Reviewed-by: Mark Mentovai <mark@chromium.org> Commit-Queue: Leonard Grey <lgrey@chromium.org>
This commit is contained in:
parent
ad2e043288
commit
85b7d3dd6f
@ -26,7 +26,6 @@
|
||||
#include "snapshot/mac/mach_o_image_reader.h"
|
||||
#include "snapshot/mac/process_reader_mac.h"
|
||||
#include "snapshot/snapshot_constants.h"
|
||||
#include "util/mac/mac_util.h"
|
||||
#include "util/stdlib/strnlen.h"
|
||||
|
||||
namespace crashpad {
|
||||
@ -69,11 +68,16 @@ std::vector<AnnotationSnapshot> MachOImageAnnotationsReader::AnnotationsList()
|
||||
void MachOImageAnnotationsReader::ReadCrashReporterClientAnnotations(
|
||||
std::vector<std::string>* vector_annotations) const {
|
||||
mach_vm_address_t crash_info_address;
|
||||
const char* segment =
|
||||
MacOSVersionNumber() >= 13'00'00 ? "__DATA_DIRTY" : SEG_DATA;
|
||||
const process_types::section* crash_info_section =
|
||||
image_reader_->GetSectionByName(
|
||||
segment, "__crash_info", &crash_info_address);
|
||||
SEG_DATA, "__crash_info", &crash_info_address);
|
||||
|
||||
if (!crash_info_section) {
|
||||
// On macOS 13, under some circumstances, `__crash_info` ends up in the
|
||||
// `__DATA_DIRTY` segment. This is known to happen for `dyld`.
|
||||
crash_info_section = image_reader_->GetSectionByName(
|
||||
"__DATA_DIRTY", "__crash_info", &crash_info_address);
|
||||
}
|
||||
if (!crash_info_section) {
|
||||
return;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user