From 8beaee224cf0c2379d3f684123533b6e01006bbb Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sat, 22 Feb 2014 15:59:22 +0000 Subject: [PATCH 13/19] Use a default debug-id of all zeros when no CV record is present This lets us do something slightly useful with current binaries which are produced without a CV record, but there is no guarantee that the actually match. Signed-off-by: Jon Turney --- src/common/pecoff/pecoff_file_id.cc | 8 ++++++++ src/processor/minidump.cc | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/src/common/pecoff/pecoff_file_id.cc b/src/common/pecoff/pecoff_file_id.cc index 47c2763f..04563c86 100644 --- a/src/common/pecoff/pecoff_file_id.cc +++ b/src/common/pecoff/pecoff_file_id.cc @@ -32,6 +32,7 @@ #include "common/pecoff/pecoff_file_id.h" +#include #include "common/pecoff/pecoffutils.h" namespace google_breakpad { @@ -73,11 +74,18 @@ bool PeCoffFileID::PeCoffFileIdentifierFromMappedFile(const void* base, age)) return true; +#if 1 + // XXX: Fallback to a default debug_identifier. + memset(identifier, 0, kMDGUIDSize); + *age = 0; + return true; +#else // Fall back on hashing the first page of the text section. // (This is of questionable value as the Windows Minidump writer doesn't have // this feature) return HashPeCoffTextSection(reinterpret_cast(base), identifier); +#endif } } // namespace google_breakpad diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc index f802210e..1b08ba3f 100644 --- a/src/processor/minidump.cc +++ b/src/processor/minidump.cc @@ -2248,6 +2248,14 @@ string MinidumpModule::debug_identifier() const { // TODO(mmentovai): on the Mac, provide fallbacks as in code_identifier(). + // XXX: PE generated with gcc don't currently have CV records, so the Windows + // minidumper can't record any identifier information, so there's no useful + // identifier for us to match with. Fallback to a default debug_identifier. + if (identifier.empty()) + { + identifier = "000000000000000000000000000000000"; + } + // Relatively common case BPLOG_IF(INFO, identifier.empty()) << "MinidumpModule could not determine " "debug_identifier for " << *name_; -- 2.28.0