Would it be sensible to make --auto-run-dsymutil=yes only take the time to read symbols if a tool needs the symbols, e.g. to output an error? That way, if there are no errors in a given library, the app would start up a little faster.
It would also make missing entries in the is_systemish_library check less likely to cause problems.
While we're at it, we could make all debug info reading lazy. Instead of reading all debug symbols (and possibly runnying dsymutil, on Darwin) when code is loaded, attach a flag to the code indicating if its debug info has been loaded, and check that before doing any debug info lookups. This might make a significant speed difference on really large programs.