Server-side workaround to handle overlapping modules.
This change is resolving an issue that was caused by the combination of: - Android system libraries being relro packed in N+. - Breakpad dealing with relro packed libraries in a hack way. This is a fix for http://crbug/611824. I also found an use-after-free issue (bug in Minidump::SeekToStreamType). I disallowed the MinidumpStreamInfo copy and assign constructors and the compiler detected another similar issue in Minidump::Print. Then I disabled the copy and assign constructors for most classes in minidump.h (just in case). There are a couple of classes where I couldn't disallow them (since assign is used). This will require a small refactor so I left it out of this CL. R=mark@chromium.org Review URL: https://codereview.chromium.org/2060663002 .
This commit is contained in:
parent
67f738b7ad
commit
24f5931c5e
18 changed files with 239 additions and 39 deletions
|
@ -126,8 +126,20 @@ ProcessResult MinidumpProcessor::Process(
|
|||
// Put a copy of the module list into ProcessState object. This is not
|
||||
// necessarily a MinidumpModuleList, but it adheres to the CodeModules
|
||||
// interface, which is all that ProcessState needs to expose.
|
||||
if (module_list)
|
||||
if (module_list) {
|
||||
process_state->modules_ = module_list->Copy();
|
||||
process_state->shrunk_range_modules_ =
|
||||
process_state->modules_->GetShrunkRangeModules();
|
||||
for (unsigned int i = 0;
|
||||
i < process_state->shrunk_range_modules_.size();
|
||||
i++) {
|
||||
linked_ptr<const CodeModule> module =
|
||||
process_state->shrunk_range_modules_[i];
|
||||
BPLOG(INFO) << "The range for module " << module->code_file()
|
||||
<< " was shrunk down by " << HexString(
|
||||
module->shrink_down_delta()) << " bytes. ";
|
||||
}
|
||||
}
|
||||
|
||||
MinidumpMemoryList *memory_list = dump->GetMemoryList();
|
||||
if (memory_list) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue