From 5e1c53a4427d65fa5d7798aea3893dc64572717e Mon Sep 17 00:00:00 2001 From: Joshua Peraza Date: Thu, 20 Feb 2020 18:56:04 -0800 Subject: [PATCH] android: truncate lower of two overlapping modules Previously, the processor truncated the upper of two overlapping module ranges to compensate for incorrect reporting of module ranges by the Breakpad client. Crashpad correctly reports module load ranges, so this truncation strategy is no longer necessary. However, when partitioned libraries are used, the base library may have a range which encompasses the other partitions. When this is combined with the truncate upper merge strategy, the base library's executable segment is truncated causing symbolization failures. This patch changes Android's merge strategy to truncate the lower range (which is still the base library, but this strategy truncates from the high end of the library's range, instead of its base). Bug: b/149845120 Change-Id: Ic75ecd3e919432690740eb21ebd4265fc0bbaa86 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2067952 Reviewed-by: Mark Mentovai --- src/processor/minidump.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc index 75b6b455..f0075eb2 100644 --- a/src/processor/minidump.cc +++ b/src/processor/minidump.cc @@ -2654,12 +2654,9 @@ MinidumpModuleList::MinidumpModuleList(Minidump* minidump) modules_(NULL), module_count_(0) { MDOSPlatform platform; - if (minidump_->GetPlatform(&platform)) { - if (platform == MD_OS_ANDROID) { - range_map_->SetMergeStrategy(MergeRangeStrategy::kTruncateUpper); - } else if (platform == MD_OS_LINUX) { - range_map_->SetMergeStrategy(MergeRangeStrategy::kTruncateLower); - } + if (minidump_->GetPlatform(&platform) && + (platform == MD_OS_ANDROID || platform == MD_OS_LINUX)) { + range_map_->SetMergeStrategy(MergeRangeStrategy::kTruncateLower); } }