I faced this error in a complex project after migration from coroutines 1.3.9 to 1.4.0.
The issue also reproduces with the latest 1.4.2.
Stacktrace uses coroutines 1.4.2 & JDK 11:
Exception in thread "kotlinx.coroutines.DefaultExecutor" java.lang.StackOverflowError
at java.base/java.lang.StringBuilder.<init>(StringBuilder.java:99)
at java.base/java.lang.Object.toString(Object.java:246)
at kotlinx.coroutines.ExecutorCoroutineDispatcherBase.toString(Executors.kt:151)
... and so on ...
at kotlinx.coroutines.EventLoopImplBase$DelayedResumeTask.toString(EventLoop.common.kt:490)
at java.lang.String.valueOf(String.java:2951)
at java.lang.StringBuilder.append(StringBuilder.java:168)
at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
at java.lang.String.valueOf(String.java:2951)
at java.lang.StringBuilder.append(StringBuilder.java:168)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:-1)
at java.lang.String.valueOf(String.java:2951)
at java.lang.StringBuilder.append(StringBuilder.java:168)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
at kotlinx.coroutines.EventLoopImplBase$DelayedResumeTask.toString(EventLoop.common.kt:490)
at java.lang.String.valueOf(String.java:2951)
at java.lang.StringBuilder.append(StringBuilder.java:168)
at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
at java.lang.String.valueOf(String.java:2951)
at java.lang.StringBuilder.append(StringBuilder.java:168)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:-1)
at java.lang.String.valueOf(String.java:2951)
at java.lang.StringBuilder.append(StringBuilder.java:168)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2053)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:825)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1355)
at java.util.concurrent.Executors$DelegatedExecutorService.execute(Executors.java:687)
at kotlinx.coroutines.ExecutorCoroutineDispatcherBase.dispatch(Executors.kt:94)
at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:159)
at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:362)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:396)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:388)
at kotlinx.coroutines.CancellableContinuationImpl.resumeUndispatched(CancellableContinuationImpl.kt:484)
at kotlinx.coroutines.EventLoopImplBase$DelayedResumeTask.run(EventLoop.common.kt:489)
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:274)
at kotlinx.coroutines.DefaultExecutor.run(DefaultExecutor.kt:69)
at java.lang.Thread.run(Thread.java:834)
I can't extract a reproducer code yet.
I'm also getting the same issue with 1.4.2. Sharing the code below and attached screenshot.
import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import java.util.concurrent.Executors
fun main()= runBlocking{
val dispatcher = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()).asCoroutineDispatcher();
repeat(100_00_00_0){
launch(dispatcher) {
delay(30000)
println("Running = $it")
}
}
dispatcher.close()
}

Will be fixed in 1.4.3 with this commit
Not sure if this is related, but I am also seeing the following StackOverflowError with 1.4.2:
kotlinx.coroutines.CoroutinesInternalError: Fatal exception in coroutines machinery for CancellableContinuation(DispatchedContinuation[Dispatchers.Main, Continuation at kotlinx.coroutines.reactive.PublisherAsFlow.collectImpl(ReactiveFlow.kt:97)@83f8ac0]){CancelledContinuation[kotlinx.coroutines.flow.internal.ChildCancelledException: Child of the scoped flow was cancelled]}@fd4c3f9. Please read KDoc to 'handleFatalException' method and report this incident to maintainers
at kotlinx.coroutines.DispatchedTask.handleFatalException$kotlinx_coroutines_core(DispatchedTask:144)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask:115)
at android.os.Handler.handleCallback(Handler.java:794)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:6635)
at java.lang.reflect.Method.invoke(Method.java:-2)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
Caused by: java.lang.StackOverflowError: stack size 8MB
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:452)
at java.lang.StringBuilder.append(StringBuilder.java:137)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CompletedContinuation.toString(Unknown:22)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl:506)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.ResumeOnCompletion.toString(ResumeOnCompletion:1395)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at kotlinx.coroutines.DisposeOnCancel.toString(DisposeOnCancel:385)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
Fixed in 1.4.3
Most helpful comment
Will be fixed in 1.4.3 with this commit