Crash reporting improvements: Difference between revisions

Added the "disassembly in the stack walker" entry
(Moved improvements from the crash reporting overhaul page)
 
(Added the "disassembly in the stack walker" entry)
Line 1: Line 1:
= Introduction =
= Introduction =


This page lists the various improvements that we want to introduce after having\
This page lists the various improvements that we want to introduce after having
finished overhauling the existing crash reporting machinery (see the
finished overhauling the existing crash reporting machinery (see the
[[Crash reporting overhaul]] page for more information). Many of the tasks
[[Crash reporting overhaul]] page for more information). Many of the tasks
Line 85: Line 85:


=== Plan ===
=== Plan ===
== Disassembly in the stack walker ==
=== Overview ===
Status: not started<br>
Developer(s):
Source code:
Original source code: N/A<br>
=== Description ===
Sometimes some critical information is missing when inspecting a crash. For
example crashes hitting non-canonical addresses on x86-64 don't have the real
crashing address but a useless placeholder instead (see {{bug|1493342}}). In
other cases such as when executing an illegal istruction we only have the
address of the instruction but no idea what it was.
=== Rationale ===
To fill in the missing information in crash reports it would be useful to
disassemble the crashing instruction and be able to inspect it:
* For non-canonical addresses we could reconstruct the real crashing address from the registers and immediate values in the instructions
* For invalid instructions we could tell if the instruction is valid and non-supported or downright invalid (in the case of a bit-flip or corrupted executable for example)
* For privileged or unsupported instructions we'd be able to tell if it's our fault or if the machine configuration is not adequate
=== Plan ===
We could integrate a disassembler such as
[https://github.com/icedland/iced iced] in the rust-minidump stackwalker and
use it to disassemble the crashing instruction. Our minidump writers usually
include the memory area around the crashing instruction so we could also
disassemble the entire area. We'd then use the raw result to verify and
adjust the crashing address and add a human readable output of the disassembly
to the JSON output so that it can be surfaced.
Confirmed users
387

edits