diff options
Diffstat (limited to 'src/processor/minidump.cc')
-rwxr-xr-x | src/processor/minidump.cc | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc index 4ad82053..7ad736d5 100755 --- a/src/processor/minidump.cc +++ b/src/processor/minidump.cc @@ -1509,13 +1509,15 @@ bool MinidumpThread::Read() { } // Check for base + size overflow or undersize. - if (thread_.stack.memory.data_size == 0 || + if (thread_.stack.memory.rva == 0 || + thread_.stack.memory.data_size == 0 || thread_.stack.memory.data_size > numeric_limits<uint64_t>::max() - thread_.stack.start_of_memory_range) { // This is ok, but log an error anyway. BPLOG(ERROR) << "MinidumpThread has a memory region problem, " << HexString(thread_.stack.start_of_memory_range) << "+" << - HexString(thread_.stack.memory.data_size); + HexString(thread_.stack.memory.data_size) << + ", RVA 0x" << HexString(thread_.stack.memory.rva); } else { memory_ = new MinidumpMemoryRegion(minidump_); memory_->SetDescriptor(&thread_.stack); @@ -1525,6 +1527,14 @@ bool MinidumpThread::Read() { return true; } +uint64_t MinidumpThread::GetStartOfStackMemoryRange() const { + if (!valid_) { + BPLOG(ERROR) << "GetStartOfStackMemoryRange: Invalid MinidumpThread"; + return 0; + } + + return thread_.stack.start_of_memory_range; +} MinidumpMemoryRegion* MinidumpThread::GetMemory() { if (!valid_) { |