From 4f417c8c0ffceb6c2516c6ef00cd91ca5746d852 Mon Sep 17 00:00:00 2001 From: Tao Bai Date: Tue, 3 May 2016 18:14:28 -0400 Subject: Write adjusted range back to module In Android, the mmap could be overlapped by /dev/ashmem, we adjusted the range in https://breakpad.appspot.com/9744002/, but adjusted range isn't written back to module, this caused the corresponding module be dropped in BasicCodeModules copy constructor. This also fix a lot of 'unable to store module' warnings when dumping Android's minidump. BUG=606972 R=mark@chromium.org, wfh@chromium.org Review URL: https://codereview.chromium.org/1939333002 . Patch from Tao Bai . --- src/processor/minidump.cc | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/processor') diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc index 84f013d0..c026559b 100644 --- a/src/processor/minidump.cc +++ b/src/processor/minidump.cc @@ -2327,6 +2327,13 @@ const MDImageDebugMisc* MinidumpModule::GetMiscRecord(uint32_t* size) { return reinterpret_cast(&(*misc_record_)[0]); } +void MinidumpModule::set_base_address_and_size(uint64_t base_address, + uint64_t size) { + if (valid_) { + module_.base_of_image = base_address; + module_.size_of_image = size; + } +} void MinidumpModule::Print() { if (!valid_) { @@ -2635,6 +2642,7 @@ bool MinidumpModuleList::Read(uint32_t expected_size) { HexString(module_size) << ", after adjusting"; return false; } + module->set_base_address_and_size(base_address, module_size); } else { BPLOG(ERROR) << "MinidumpModuleList could not store module " << module_index << "/" << module_count << ", " << -- cgit v1.2.1