diff options
author | Mike Frysinger <vapier@chromium.org> | 2019-03-02 02:37:25 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@chromium.org> | 2019-03-12 05:02:27 +0000 |
commit | 3ee9a0b27438910a8fcbc263fc0df8b901a78d71 (patch) | |
tree | 9c46c2ac14481fc7e932d58eb7c67aa11343530b /src/client/linux/minidump_writer/minidump_writer.cc | |
parent | linux_core_dumper: add a fallback definition for NT_SIGINFO (diff) | |
download | breakpad-3ee9a0b27438910a8fcbc263fc0df8b901a78d71.tar.xz |
linux_core_dumper: support setting exception_information
Many signals in Linux support additional metadata on a per-signal
basis. We can extract that from NT_SIGINFO and pass it through
in the exception_information fields.
The current core dumper logic doesn't set exception_information
at all, so this is an improvement.
Bug: google-breakpad:791
Change-Id: I38b78d6494e9bc682441750d98ac9be5b0656f5a
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1497662
Reviewed-by: Mark Mentovai <mark@chromium.org>
Diffstat (limited to 'src/client/linux/minidump_writer/minidump_writer.cc')
-rw-r--r-- | src/client/linux/minidump_writer/minidump_writer.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/client/linux/minidump_writer/minidump_writer.cc b/src/client/linux/minidump_writer/minidump_writer.cc index 31e7bd62..e436bf07 100644 --- a/src/client/linux/minidump_writer/minidump_writer.cc +++ b/src/client/linux/minidump_writer/minidump_writer.cc @@ -713,6 +713,12 @@ class MinidumpWriter { stream->exception_record.exception_code = dumper_->crash_signal(); stream->exception_record.exception_flags = dumper_->crash_signal_code(); stream->exception_record.exception_address = dumper_->crash_address(); + const std::vector<uint64_t> crash_exception_info = + dumper_->crash_exception_info(); + stream->exception_record.number_parameters = crash_exception_info.size(); + memcpy(stream->exception_record.exception_information, + crash_exception_info.data(), + sizeof(uint64_t) * crash_exception_info.size()); stream->thread_context = crashing_thread_context_; return true; |