A lot of the test cases do something like Future#get() which blocks indefinitely. Oftentimes this is waiting on an event (i.e. log message) from the kernel. In cases when the event never happens, that thread waits indefinitely, and in turn, so does the Thread#join call in the ConcurrentRunner