Confirmed users
387
edits
(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. |