rust-minidump project: minidump processor in Rust

45 views
Skip to first unread message

Ted Mielczarek

unread,
Apr 5, 2016, 9:55:11 AM4/5/16
to google-brea...@googlegroups.com
I kept meaning to mention this, but never got around to it. As a project
to learn Rust last year I started implementing a minidump processor in
Rust:
https://github.com/luser/rust-minidump

It's functionally a from-scratch port of the processor parts of Breakpad
written in Rust. It builds minidump_stackwalk and minidump_dump binaries
that are output-compatible with the existing Breakpad tools (modulo
things that are not yet implemented), and also exposes a set of APIs to
manipulate minidumps. You can read the generated API documentation here:
http://luser.github.io/rust-project-docs/minidump/minidump/

It's not feature-complete with Breakpad, but it's pretty usable right
now. The biggest things it's missing are better stack unwinding. Right
now it implements an x86 frame pointer stack unwinder, but nothing for
any other CPU architecture, and none of the other more useful unwinders
like the ones that use Windows frame info or CFI. It does have a
text-format symbol file parser, and it can provide function + source
info, so adding unwind info handling is on my list of things to do.

This started out as a toy project to learn a new language, but it turns
out Rust is a pretty great language, so it's pretty likely that I'll do
some more work to flesh out the set of Breakpad features that Mozilla
needs for minidump processing and switch our crash-stats processor over
to use a stackwalker built in Rust.

I know there were some rumblings about rewriting the processor in
Crashpad, so I just wanted to make you aware of this since I've already
written a bunch of code.

-Ted
Reply all
Reply to author
Forward
0 new messages