Created by: Carrotman42
Previously, if we weren't able to take over all threads after a few retries we would have a debug-level assert but otherwise continue on with running the application. This can cause lots of correctness problems in the application, and it would be better to cleanly crash ahead of time rather than wait for an application crash to happen.
Issue #2723