Type definitions, parsing, and analysis for the minidump file format.
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rust-minidump/rust-minidump/releases/download/v0.21.1/minidump-stackwalk-installer.sh | sh
File | Platform | Checksum |
---|---|---|
minidump-stackwalk-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
minidump-stackwalk-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
minidump-stackwalk-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
minidump-stackwalk-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
minidump-stackwalk-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rust-minidump/rust-minidump/releases/download/v0.21.0/minidump-stackwalk-installer.sh | sh
File | Platform | Checksum |
---|---|---|
minidump-stackwalk-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
minidump-stackwalk-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
minidump-stackwalk-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
minidump-stackwalk-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
minidump-stackwalk-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
dump_syms
option was removed, support for stack-walking and
symbolication using native debug information is mature enough that we don't
need it anymorecurl --proto '=https' --tlsv1.2 -LsSf https://github.com/rust-minidump/rust-minidump/releases/download/v0.20.0/minidump-stackwalk-installer.sh | sh
File | Platform | Checksum |
---|---|---|
minidump-stackwalk-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
minidump-stackwalk-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
minidump-stackwalk-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
minidump-stackwalk-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
minidump-stackwalk-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rust-minidump/rust-minidump/releases/download/v0.19.1/minidump-stackwalk-installer.sh | sh
File | Platform | Checksum |
---|---|---|
minidump-stackwalk-aarch64-apple-darwin.tar.xz | macOS Apple Silicon | checksum |
minidump-stackwalk-x86_64-apple-darwin.tar.xz | macOS Intel | checksum |
minidump-stackwalk-x86_64-pc-windows-msvc.zip | Windows x64 | checksum |
minidump-stackwalk-x86_64-unknown-linux-gnu.tar.xz | Linux x64 | checksum |
File | Platform | Checksum |
---|---|---|
minidump-stackwalk-aarch64-apple-darwin.tar.xz | macOS Apple Silicon | checksum |
minidump-stackwalk-x86_64-apple-darwin.tar.xz | macOS Intel | checksum |
minidump-stackwalk-x86_64-pc-windows-msvc.zip | Windows x64 | checksum |
minidump-stackwalk-x86_64-unknown-linux-gnu.tar.xz | Linux x64 | checksum |
The stack walking machinery has been extracted from the minidump-processor crate and put in a separate one. This crate has significantly less dependencies than the minidump-processor crate which makes it easier to vendor it in projects that only care about stack walking.
While analyzing a crash minidump-stackwalk will check if the crashing address
hit a potential guard page. Guard pages are usually introduced by the memory
allocator around larger allocation and have no permissions set. If the crash
address hit one of these pages the memory_accesses
filed in the JSON output
will contain the is_likely_guard_page: true
field.
minidump-common::format
structs writable with scroll
.The minidump-processor
crate will use the disassembly of the current
instruction to check whether the crash involved a NULL-pointer access. Crashes
caused by accessing NULL pointers often exhibit near-NULL address making it less
clear what the underlying problem was. When using minidump-stackwalk
the JSON
output will contain an adjusted_address
field holding the reason for the
adjustment (null-pointer
) as well as the offest from NULL.
The minidump-processor
crate contains new logic that detects crashes that have
been potentially caused by a bit-flip in the user's machine memory. This
detection is driven by a heuristic as it is impossible to completely tell apart
software crashes from ones induced by flaky hardware. The tests we conducted on
real crash data showed this heuristic to be very effective in telling apart such
crashes. When using minidump-stackwalk
this information will be added to the
JSON output under the possible_bit_flips
field.
The stack walker now supports using native debug information available on the
host in addition to Breakpad .sym files. This functionality is enabled by
passing the --use-local-debuginfo
flag to minidump-stackwalk
when processing
a crash.
The stackwalker is now capable of disassembling the crashing instruction, printing it out as well as its memory operands. This functionality is used to improve crash analysis: we implemented the ability to extract the real crashing address for global protection fault exceptions on x86-64. These were usually the result of an access to a non-canonical memory location and were reported as either 0x0000000000000000 or 0xffffffffffffffff depending on the platform, irrespective of the actual address.