Corrupted minidumps was leading to unpredictable behavior.
This change adds explicit consistency checks for the minidump early on. The checks are not comprehensive but they should catch obvious structural violations:
- streams with type == 0
- duplicate streams (same type)
- overlapping streams
- truncated minidumps
Another early check is to make sure we actually support the minidump architecture instead of crashing at a random place deep inside LLDB.
I'm not a big fan of 2-step initialization, but that seems to be the way of LLDB. :-(