52 lines
2.0 KiB
Diff
52 lines
2.0 KiB
Diff
From 1f35257db226d6d0189cff0832a97cccc639c91a 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/4] 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 78faf77a..c4fda7b7 100644
|
|
--- a/src/processor/minidump.cc
|
|
+++ b/src/processor/minidump.cc
|
|
@@ -2774,7 +2774,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
|
|
@@ -2786,7 +2786,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.
|
|
@@ -2813,7 +2820,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.21.0
|
|
|