All of those things break. Congratulations if you've managed to experience life without that.
Anyway, comparing software to chairs is unlikely to yield any useful wisdom IMO, so I'm not actually going to attempt to make an argument based on that. I know that any non-trivial piece of software will have millions of potential codepaths, and Firefox likely has a number of potential total codepaths so large that we could not ever hope to calculate it through the entirety of humanity's existence, so I think it's just only reasonable to expect that some of those codepaths may crash.
For safety-critical applications where you can't afford to have a software bug kill a bunch of people, there's only one realistic option: you can't rely on never having a software bug. You instead must do your best to ensure that as many classes of software bug as possible can't, on their own, cause damage. Ideally you would combine safeguards at every possible level: of course try to eliminate bugs, but also add hardware protections, redundancy, and realistically any kind of mitigation you can.
I do not know how much better software engineering could be with more discipline, but I do know that simply asking humans to not make mistakes when writing millions of lines of code isn't reasonable, and the stakes are not always high enough to warrant writing everything in Ada.
Anyway, if my fridge fails, I have to order some replacement parts or worse, maybe a new fridge. If Firefox crashes, I am annoyed for like 30 seconds until I hit "Restore Session" and it happens infrequently enough that I'm not even sure when the last time was.
(P.S.: It's also worth noting that despite regulation and despite the rigor of traditional engineering, gas-lifted chairs occasionally explode and kill the people sitting on them. I don't think I've ever heard of a Firefox crash directly killing someone, so there's at least that.)
Update: In middle of trying to post this, HN stopped processing requests for maybe 15 minutes. Almost poetic.