| Index: src/client/linux/microdump_writer/microdump_writer.cc
|
| diff --git a/src/client/linux/microdump_writer/microdump_writer.cc b/src/client/linux/microdump_writer/microdump_writer.cc
|
| index d2eaa6ee69f7ae20f0464716ba571e21810b6fcb..1ec4059018d291e1ead80c94780341604d5a3ca0 100644
|
| --- a/src/client/linux/microdump_writer/microdump_writer.cc
|
| +++ b/src/client/linux/microdump_writer/microdump_writer.cc
|
| @@ -60,6 +60,7 @@ class MicrodumpWriter {
|
| const MappingList& mappings,
|
| const char* build_fingerprint,
|
| const char* product_info,
|
| + const char* gpu_fingerprint,
|
| LinuxDumper* dumper)
|
| : ucontext_(context ? &context->context : NULL),
|
| #if !defined(__ARM_EABI__) && !defined(__mips__)
|
| @@ -69,6 +70,7 @@ class MicrodumpWriter {
|
| mapping_list_(mappings),
|
| build_fingerprint_(build_fingerprint),
|
| product_info_(product_info),
|
| + gpu_fingerprint_(gpu_fingerprint),
|
| log_line_(NULL) {
|
| log_line_ = reinterpret_cast<char*>(Alloc(kLineBufferSize));
|
| if (log_line_)
|
| @@ -92,6 +94,7 @@ class MicrodumpWriter {
|
| LogLine("-----BEGIN BREAKPAD MICRODUMP-----");
|
| DumpProductInformation();
|
| DumpOSInformation();
|
| + DumpGPUInformation();
|
| success = DumpCrashingThread();
|
| if (success)
|
| success = DumpMappings();
|
| @@ -212,6 +215,16 @@ class MicrodumpWriter {
|
| LogCommitLine();
|
| }
|
|
|
| + void DumpGPUInformation() {
|
| + LogAppend("G ");
|
| + if (gpu_fingerprint_) {
|
| + LogAppend(gpu_fingerprint_);
|
| + } else {
|
| + LogAppend("UNKNOWN");
|
| + }
|
| + LogCommitLine();
|
| + }
|
| +
|
| bool DumpThreadStack(uint32_t thread_id,
|
| uintptr_t stack_pointer,
|
| int max_stack_len,
|
| @@ -392,6 +405,7 @@ class MicrodumpWriter {
|
| const MappingList& mapping_list_;
|
| const char* const build_fingerprint_;
|
| const char* const product_info_;
|
| + const char* const gpu_fingerprint_;
|
| char* log_line_;
|
| };
|
| } // namespace
|
| @@ -403,7 +417,8 @@ bool WriteMicrodump(pid_t crashing_process,
|
| size_t blob_size,
|
| const MappingList& mappings,
|
| const char* build_fingerprint,
|
| - const char* product_info) {
|
| + const char* product_info,
|
| + const char* gpu_fingerprint) {
|
| LinuxPtraceDumper dumper(crashing_process);
|
| const ExceptionHandler::CrashContext* context = NULL;
|
| if (blob) {
|
| @@ -416,7 +431,7 @@ bool WriteMicrodump(pid_t crashing_process,
|
| dumper.set_crash_thread(context->tid);
|
| }
|
| MicrodumpWriter writer(context, mappings, build_fingerprint, product_info,
|
| - &dumper);
|
| + gpu_fingerprint, &dumper);
|
| if (!writer.Init())
|
| return false;
|
| return writer.Dump();
|
|
|