Could it be that other coroutines are blocking all threads in the CommonPool? How man subscribe() calls do you have launched?
If this is the case, runBlocking would borrow one of these threads whils launch would schedule a new coroutine waiting for an executor thread to become idle.
Generally, it would be good practice to launch the blocking subscribe() calls in a separate thread pool and not waste the CommonPool.