52 lines
2.0 KiB
Diff
52 lines
2.0 KiB
Diff
From 58a7ad704435fa7c7c401683cdf4bcad5f67718d Mon Sep 17 00:00:00 2001
|
|
From: Asher Baker <asherkin@limetech.io>
|
|
Date: Sun, 13 Jan 2019 12:34:45 +0000
|
|
Subject: [PATCH 1/2] Ignore invalid modules rather than bailing on the entire
|
|
module list
|
|
|
|
---
|
|
src/processor/minidump.cc | 13 ++++++++++---
|
|
1 file changed, 10 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc
|
|
index afc5f038..63d4a426 100644
|
|
--- a/src/processor/minidump.cc
|
|
+++ b/src/processor/minidump.cc
|
|
@@ -2766,7 +2766,7 @@ bool MinidumpModuleList::Read(uint32_t expected_size) {
|
|
BPLOG(ERROR) << "MinidumpModuleList could not read required module "
|
|
"auxiliary data for module " <<
|
|
module_index << "/" << module_count;
|
|
- return false;
|
|
+ continue;
|
|
}
|
|
|
|
// It is safe to use module->code_file() after successfully calling
|
|
@@ -2778,7 +2778,14 @@ bool MinidumpModuleList::Read(uint32_t expected_size) {
|
|
BPLOG(ERROR) << "MinidumpModuleList found bad base address for module "
|
|
<< module_index << "/" << module_count << ", "
|
|
<< module.code_file();
|
|
- return false;
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ if (module_size == static_cast<uint32_t>(-1)) {
|
|
+ BPLOG(ERROR) << "MinidumpModuleList found bad size for module "
|
|
+ << module_index << "/" << module_count << ", "
|
|
+ << module.code_file();
|
|
+ continue;
|
|
}
|
|
|
|
// Some minidumps have additional modules in the list that are duplicates.
|
|
@@ -2805,7 +2812,7 @@ bool MinidumpModuleList::Read(uint32_t expected_size) {
|
|
<< module_index << "/" << module_count << ", "
|
|
<< module.code_file() << ", " << HexString(base_address)
|
|
<< "+" << HexString(module_size);
|
|
- return false;
|
|
+ continue;
|
|
}
|
|
|
|
// If failed due to apparent range overlap the cause may be the client
|
|
--
|
|
2.17.2
|
|
|