aboutsummaryrefslogtreecommitdiff
path: root/src/processor
diff options
context:
space:
mode:
authorLei Zhang <thestig@chromium.org>2018-06-26 11:34:34 -0700
committerLei Zhang <thestig@chromium.org>2018-06-28 00:20:21 +0000
commit79ba6a494fb2097b39f76fe6a4b4b4f407e32a02 (patch)
tree68369513cff3a152a696636ab3e2eab69fb3eeb1 /src/processor
parentOnly do Android-specific adjustments for Android minidumps. (diff)
downloadbreakpad-79ba6a494fb2097b39f76fe6a4b4b4f407e32a02.tar.xz
Ignore duplicate module list entries.
BUG=chromium:838322 Change-Id: Ie19c1a39e49332b650a618758f925b127026bddf Reviewed-on: https://chromium-review.googlesource.com/1115437 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Diffstat (limited to 'src/processor')
-rw-r--r--src/processor/minidump.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc
index d6309877..606a5ddd 100644
--- a/src/processor/minidump.cc
+++ b/src/processor/minidump.cc
@@ -2725,6 +2725,22 @@ bool MinidumpModuleList::Read(uint32_t expected_size) {
return false;
}
+ // Some minidumps have additional modules in the list that are duplicates.
+ // Ignore them. See https://crbug.com/838322
+ uint32_t existing_module_index;
+ if (range_map_->RetrieveRange(base_address, &existing_module_index,
+ nullptr, nullptr, nullptr) &&
+ existing_module_index < module_count) {
+ const MinidumpModule& existing_module =
+ (*modules)[existing_module_index];
+ if (existing_module.base_address() == module.base_address() &&
+ existing_module.size() == module.size() &&
+ existing_module.code_file() == module.code_file() &&
+ existing_module.code_identifier() == module.code_identifier()) {
+ continue;
+ }
+ }
+
const bool is_android = minidump_->IsAndroid();
if (!StoreRange(module, base_address, module_index, module_count,
is_android)) {