In order to select most relevant frame the debugger needs to unwind current frames for each thread which could be slow.
This is a problem in case of executing with remote debugger attached and conditional breakpoints set.
In that case the debugger will stop the execution on a breakpoint hit to run conditional expression and will resume the execution after.
If there are a lot of threads (90+) the simple "for" loop with 50 iterations and conditional breakpoint could take more than 2 minutes to execute.
From my observation most of this time will be spent on SelectMostRelevantFrame method (since it need to unwind stack for all threads).
Since the most relevant frame is needed only for assert failure it looks like we can collect it only for signals.