Thank you for this work! I've been involved with minidumps in one way or another since around 2010. Was at a startup at the time that had a browser based on Chromium and we needed crash reporting for our own app. So I wrote a pretty simply backend that received minidumps, ran them through the breakpad processor and shoved the output into Splunk. That was our crash-reporting system. Circa 2013 the company gets acquire…
Everything Is Broken: Shipping Rust-Minidump at Mozilla
51–60 of 67 posts
Re: Everything Is Broken: Shipping Rust-Minidump at Mozilla
#52The article is very vague about the details, which could be of interest to people in as similar situation.
Re: Everything Is Broken: Shipping Rust-Minidump at Mozilla
#53Gankra is the most entertaining Rust author (Rust programmer who writes about Rust). Easily.
Mmm. I think @m_ou_se is probably the most entertaining at least if we consider that both Saturday Night Live and Nightmare On Elm Street is entertainment. For example, Rust deliberately doesn't have the tertiary operator, and random other types don't get silently coerced as booleans - so you can't write a = x ? 1 : -1; however you can write a = if x != 0 { 1 } else { -1 }; with the same effect. But Mara isn't satisf…
Re: Everything Is Broken: Shipping Rust-Minidump at Mozilla
#54I wonder how much of the benefits comes from the rewrite itself and not Rust. I have taken really bad hard to maintain very large code bases written in C++ and step-by-step refactored it into bug free maintainable code. In my experience bad code written in any language is hard to maintain. And good code written in any language is easy to maintain. I have worked with C code that was a joy to maintain and C code that w…
Original rust-minidump author here: I started out by doing a pretty straightforward port of Breakpad into Rust, which I had just started learning at the time. I figured that learning a new language by porting a codebase I was intimately familiar with for a content area that I knew extremely well would make it so only the new language was the hard part. (It worked out well!) I did try to make the API more idiomatic Ru…
Let's give them credit for what we've achieved using them. I would definitely pick Rust over C++ any time, I respect C++ for all the cool things it gave us.
Re: Everything Is Broken: Shipping Rust-Minidump at Mozilla
#55Earlier quoted context omitted.
Original rust-minidump author here: I started out by doing a pretty straightforward port of Breakpad into Rust, which I had just started learning at the time. I figured that learning a new language by porting a codebase I was intimately familiar with for a content area that I knew extremely well would make it so only the new language was the hard part. (It worked out well!) I did try to make the API more idiomatic Ru…
> Sure, you can write bad code in any language, but C and C++ are just bad languages. Let's give them credit for what we've achieved using them. I would definitely pick Rust over C++ any time, I respect C++ for all the cool things it gave us.
Re: Everything Is Broken: Shipping Rust-Minidump at Mozilla
#56Thank you for this work! I've been involved with minidumps in one way or another since around 2010. Was at a startup at the time that had a browser based on Chromium and we needed crash reporting for our own app. So I wrote a pretty simply backend that received minidumps, ran them through the breakpad processor and shoved the output into Splunk. That was our crash-reporting system. Circa 2013 the company gets acquire…
Apple actually recently added support for high-quality crash reports (the kind you'd get from their tooling, more or less) in MetricKit: https://developer.apple.com/documentation/metrickit/mxcrashd... .
Re: Everything Is Broken: Shipping Rust-Minidump at Mozilla
#57I once had some MS C code that called some 3rd-party library function. This was a long time ago, I don't remember all the details! But roughly, the code did a comparison, called this function, then made a jump conditional on the result of the comparison. But the condition wasn't being evaluated correctly.
It turned out that the library was built using a Borland compiler; my code was Microsoft C. The calling conventions differed; Borland expected the caller to save the flag register on the stack before calling, and restore it on returning; Microsoft expected the called function to do this. As a result, the flags that had been set before the function call were junk after it returned.
The way that Borland did it was the "convention" - as far as I'm aware, Microsoft stood alone on this. I formed the belief that Microsoft was doing things the way it did in order to deliberately make Microsoft C code incompatible with libraries built with 3rd-party compilers.
Re: Everything Is Broken: Shipping Rust-Minidump at Mozilla
#58Minidumps designed so well the initial Windows/x86 impl could be easily extended to multiple platforms like Google breakpad did. Symbols on demand over HTTP. For all the crap they get Microsoft got many things right.
Re: Everything Is Broken: Shipping Rust-Minidump at Mozilla
#59What a fun read! :3 I really like your writing style. Deploying stuff to production is always so nerve-wracking, I related to that very hard. I recently developed a golang alternative to an old erlang-ruby-hodgepodge, and when it worked in production I found myself constantly not believing that nothing went wrong.
I think a lot of us can recognize this feeling when you have deployed big changes. Everything seems to be working fine, but you just don't trust it.
Re: Everything Is Broken: Shipping Rust-Minidump at Mozilla
#60Earlier quoted context omitted.
There are entire classes of bugs that cannot happen in (safe) Rust that can still happen in a “bug free” C++ code based. You’re correct that Rust isn’t a panacea, but it does eliminate certain concerns that C++ just can not remove from thought while developing with it. The great thing about Rust is that it reduces the knowledge and skill a developer needs in order to write a stable and (usually) performant program. T…
There are entire classes of bugs that cannot happen in (safe) Java/Erlang/Scheme/etc. that can still happen in a "bug free" Rust code base.
Sticking with Java, Rust also offers a better story around thread safety, such that sharing mutable state across threads requires types that allow that to work.
Finally, Java’s exception handling and null usage generally allows a lot of low hanging fruit bugs to slip through where in Rust these types of errors are far less likely to happen.
I never said Rust is “bug free”, I’ve been working with software far to long to make such a provably wrong statement.