Modified bootloader, carefully crafted to avoid using RAM that the user sketch would have used.
Hardly seems worth the effort - simpler to avoid the bugs and the crash in the first place.
(And yes, I do use crash dumps, but the devices have multi-core processors, hundreds of MB of RAM and tens of GB of flash, so not only is there spare capacity to get the dumps out, but there's also more fingers in the pie to put the bugs in in the first place)
There are approaches to this - for instance if the crash causes a reset you can have a switch on a pin that is sensed early in setup() - if the switch is active run the sketch, if the switch isn't active, run a RAM dump and then wait.
Run a RAM dump on memory that has probably just been reintialised by crt0? No, not a good idea.. "setup" is far too late.