(CoroutineDebugger) 201 compatibility fix

#KT-39143 fixed
This commit is contained in:
Vladimir Ilmov
2020-05-21 20:11:09 +02:00
parent 7a70f8d29e
commit 545fdb96d5
33 changed files with 741 additions and 620 deletions
@@ -5,13 +5,7 @@
package org.jetbrains.kotlin.idea.debugger.test
import com.intellij.debugger.engine.JavaStackFrame
import com.intellij.debugger.engine.SuspendContextImpl
import com.intellij.execution.process.ProcessOutputTypes
import com.intellij.xdebugger.frame.XStackFrame
import org.jetbrains.kotlin.idea.debugger.coroutine.PreflightProvider
import org.jetbrains.kotlin.idea.debugger.test.preference.DebuggerPreferences
import org.jetbrains.kotlin.idea.debugger.test.util.XDebuggerTestUtil
abstract class AbstractXCoroutinesStackTraceTest : KotlinDescriptorTestCaseWithStackFrames() {
override fun doMultiFileTest(files: TestFiles, preferences: DebuggerPreferences) {
@@ -33,6 +33,11 @@ public class ContinuationStackTraceTestGenerated extends AbstractContinuationSta
runTest("idea/jvm-debugger/jvm-debugger-test/testData/continuation/suspendFun.kt");
}
@TestMetadata("suspendFunWithInner.kt")
public void testSuspendFunWithInner() throws Exception {
runTest("idea/jvm-debugger/jvm-debugger-test/testData/continuation/suspendFunWithInner.kt");
}
@TestMetadata("suspendLambda.kt")
public void testSuspendLambda() throws Exception {
runTest("idea/jvm-debugger/jvm-debugger-test/testData/continuation/suspendLambda.kt");
@@ -0,0 +1,16 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.idea.debugger.test
import org.junit.runner.RunWith
import org.junit.runners.Suite
@Suite.SuiteClasses(
ContinuationStackTraceTestGenerated::class,
XCoroutinesStackTraceTestGenerated::class
)
@RunWith(Suite::class)
class CoroutineDebuggerTestSuite
@@ -19,10 +19,11 @@ import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEdito
import com.intellij.testFramework.EdtTestUtil
import com.intellij.xdebugger.frame.XNamedValue
import com.intellij.xdebugger.frame.XStackFrame
import com.intellij.xdebugger.impl.frame.XDebuggerFramesList
import org.jetbrains.idea.maven.aether.ArtifactKind
import org.jetbrains.jps.model.library.JpsMavenRepositoryLibraryDescriptor
import org.jetbrains.kotlin.idea.debugger.coroutine.CoroutineAsyncStackTraceProvider
import org.jetbrains.kotlin.idea.debugger.coroutine.PreflightProvider
import org.jetbrains.kotlin.idea.debugger.coroutine.data.CoroutinePreflightFrame
import org.jetbrains.kotlin.idea.debugger.coroutine.data.CreationCoroutineStackFrameItem
import org.jetbrains.kotlin.idea.debugger.invokeInSuspendManagerThread
import org.jetbrains.kotlin.idea.debugger.test.preference.DebuggerPreferences
@@ -44,7 +45,7 @@ abstract class KotlinDescriptorTestCaseWithStackFrames() : KotlinDescriptorTestC
val classPath = mutableListOf<String>()
protected fun out(frame: XStackFrame) {
out(INDENT_FRAME, XDebuggerTestUtil.getFramePresentation(frame))
out(INDENT_FRAME, frame.javaClass.simpleName + " FRAME:" + XDebuggerTestUtil.getFramePresentation(frame))
outVariables(frame)
}
@@ -84,32 +85,28 @@ abstract class KotlinDescriptorTestCaseWithStackFrames() : KotlinDescriptorTestC
out("Thread stack trace:")
val stackFrames: List<XStackFrame> = XDebuggerTestUtil.collectFrames(executionStack)
val suspendContextImpl = suspendContext as SuspendContextImpl
suspendContextImpl.runActionInSuspendCommand {
for (frame in stackFrames) {
if (frame is JavaStackFrame) {
out(frame)
val stackFrames = suspendContext.invokeInSuspendManagerThread(debugProcess) {
asyncStackTraceProvider?.getAsyncStackTrace(frame, suspendContextImpl)
}
if (stackFrames != null) {
if (stackFrames is PreflightProvider) {
val preflightFrame = stackFrames.getPreflight()
out(0, preflightFrame.coroutineInfoData.key.toString())
}
for (frameItem in stackFrames) {
if (frameItem is CreationCoroutineStackFrameItem && frameItem.first)
out(0, "Creation stack frame")
val frame: XStackFrame? = suspendContext.invokeInSuspendManagerThread(debugProcess) {
frameItem.createFrame(debugProcess)
}
frame?.let {
out(frame)
}
for (frame in stackFrames) {
if (frame is JavaStackFrame) {
out(frame)
if (frame is CoroutinePreflightFrame) {
val key = frame.coroutineInfoData.key
out(0, "CoroutineInfo: ${key.id} ${key.name} ${key.state}")
}
val stackFrames = suspendContext.invokeInSuspendManagerThread(debugProcess) {
asyncStackTraceProvider?.getAsyncStackTrace(frame, suspendContextImpl)
}
if (stackFrames != null) {
for (frameItem in stackFrames) {
val frame: XStackFrame? =
frameItem.createFrame(debugProcess)
if (frame is XDebuggerFramesList.ItemWithSeparatorAbove && frame.hasSeparatorAbove())
out(0, frame.captionAboveOf)
frame?.let {
out(frame)
}
return@runActionInSuspendCommand
}
return@doWhenXSessionPausedThenResume
}
}
}
@@ -31,7 +31,7 @@ import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants
import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree
import com.intellij.xdebugger.impl.ui.tree.nodes.*
import org.jetbrains.kotlin.idea.debugger.KotlinFrameExtraVariablesProvider
import org.jetbrains.kotlin.idea.debugger.coroutine.data.ContinuationValueDescriptorImpl
import org.jetbrains.kotlin.idea.debugger.coroutine.data.ContinuationVariableValueDescriptorImpl
import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinCodeFragmentFactory
import org.jetbrains.kotlin.idea.debugger.invokeInManagerThread
import org.jetbrains.kotlin.idea.debugger.test.KOTLIN_LIBRARY_NAME
@@ -275,7 +275,7 @@ private class Printer(private val delegate: FramePrinterDelegate, private val co
is ThisDescriptorImpl -> "this"
is FieldDescriptor -> "field"
is ArrayElementDescriptor -> "element"
is ContinuationValueDescriptorImpl -> "cont"
is ContinuationVariableValueDescriptorImpl -> "cont"
is MessageDescriptor -> ""
else -> "unknown"
}
@@ -109,9 +109,10 @@ internal class KotlinOutputChecker(
val disconnectedIndex = lines.indexOfFirst { it.startsWith(DISCONNECT_PREFIX) }
lines[disconnectedIndex] = DISCONNECT_PREFIX
return lines.filter {
!(it.matches(JDI_BUG_OUTPUT_PATTERN_1) || it.matches(JDI_BUG_OUTPUT_PATTERN_2))
}.joinToString("\n")
return lines
.map { it.replace("FRAME:(.*):\\d+".toRegex(), "$1:!LINE_NUMBER!") }
.filter { !(it.matches(JDI_BUG_OUTPUT_PATTERN_1) || it.matches(JDI_BUG_OUTPUT_PATTERN_2)) }
.joinToString("\n")
}
private fun buildOutputString(): String {
@@ -3,22 +3,22 @@ Run Java
Connected to the target VM
suspendFun.kt:28
Thread stack trace:
b:28, SuspendFunKt (coroutine1)
KotlinStackFrame b:!LINE_NUMBER!, SuspendFunKt (coroutine1)
($completion, b, bParam)
a:21, SuspendFunKt (coroutine1)
CoroutinePreflightFrame a:!LINE_NUMBER!, SuspendFunKt (coroutine1)
($completion, $continuation, $result, a, aParam)
CoroutineNameIdState(name=coroutine, id=-1, state=UNKNOWN, dispatcher=null)
test1:15, SuspendFunKt (coroutine1)
(i, test1)
invoke:9, SuspendFunKt$main$result$1 (coroutine1)
CoroutineInfo: -1 coroutine UNKNOWN
CoroutineStackFrame test1:!LINE_NUMBER!, SuspendFunKt (coroutine1)
($completion, $continuation, $result, i, test1)
CoroutineStackFrame invoke:!LINE_NUMBER!, SuspendFunKt$main$result$1 (coroutine1)
(continuation, p1, this)
invokeSuspend:121, IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$3 (kotlin.coroutines.intrinsics)
CoroutineStackFrame invokeSuspend:!LINE_NUMBER!, IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$3 (kotlin.coroutines.intrinsics)
($i$a$-createCoroutineFromSuspendFunction-IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$2, it, result, this)
resumeWith:33, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
CoroutineStackFrame resumeWith:!LINE_NUMBER!, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
($i$a$-with-BaseContinuationImpl$resumeWith$1, $this$with, completion, current, param, result, this)
startCoroutine:128, ContinuationKt (kotlin.coroutines)
CoroutineStackFrame startCoroutine:!LINE_NUMBER!, ContinuationKt (kotlin.coroutines)
($this$startCoroutine, completion, receiver)
main:9, SuspendFunKt (coroutine1)
CoroutineStackFrame main:!LINE_NUMBER!, SuspendFunKt (coroutine1)
(cnt)
Disconnected from the target VM
@@ -0,0 +1,44 @@
package continuation
// ATTACH_LIBRARY: maven(org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.3.5)-javaagent
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.yield
fun main() {
val mainTestVal = ""
runBlocking {
val rootCoroutineVal = mainTestVal
TestSuspendA().a()
print("")
}
}
class TestSuspendA {
val classField = ""
suspend fun a() {
val methodVal = ""
InClassB().b()
print("")
}
class InClassB {
val inClassBField = ""
suspend fun b() {
val inClassBMethodVal = ""
InClassC().c()
print("")
}
inner class InClassC {
val inClassCField = inClassBField
suspend fun c() {
yield()
val inClassCMethodVal = ""
//Breakpoint!
print("")
}
}
}
}
@@ -0,0 +1,46 @@
LineBreakpoint created at suspendFunWithInner.kt:40
Run Java
Connected to the target VM
suspendFunWithInner.kt:40
Thread stack trace:
CoroutinePreflightFrame c:!LINE_NUMBER!, TestSuspendA$InClassB$InClassC (continuation)
($completion, $continuation, $result, inClassCMethodVal, this)
CoroutineInfo: 1 coroutine RUNNING
CoroutineStackFrame b:!LINE_NUMBER!, TestSuspendA$InClassB (continuation)
(inClassBMethodVal, this)
CoroutineStackFrame a:!LINE_NUMBER!, TestSuspendA (continuation)
(methodVal, this)
CoroutineStackFrame invokeSuspend:!LINE_NUMBER!, SuspendFunWithInnerKt$main$1 (continuation)
($this$runBlocking, rootCoroutineVal)
CoroutineStackFrame resumeWith:!LINE_NUMBER!, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
($i$a$-with-BaseContinuationImpl$resumeWith$1, $this$with, completion, current, param, result, this)
CoroutineStackFrame run:!LINE_NUMBER!, DispatchedTask (kotlinx.coroutines)
($i$a$-withCoroutineContext-DispatchedTask$run$1, $i$f$withCoroutineContext, context, continuation, countOrElement$iv, delegate, exception, fatalException, job, oldValue$iv, state, taskContext, this)
CoroutineStackFrame processNextEvent:!LINE_NUMBER!, EventLoopImplBase (kotlinx.coroutines)
(delayed, this)
CoroutineStackFrame joinBlocking:!LINE_NUMBER!, BlockingCoroutine (kotlinx.coroutines)
(this)
CoroutineStackFrame runBlocking:!LINE_NUMBER!, BuildersKt__BuildersKt (kotlinx.coroutines)
(block, context, contextInterceptor, coroutine, currentThread, eventLoop, newContext)
CoroutineStackFrame runBlocking:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
(block, context)
CoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt__BuildersKt (kotlinx.coroutines)
()
CoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
()
CoroutineStackFrame main:!LINE_NUMBER!, SuspendFunWithInnerKt (continuation)
(mainTestVal)
Coroutine creation stack trace
CreationCoroutineStackFrame createCoroutineUnintercepted:!LINE_NUMBER!, IntrinsicsKt__IntrinsicsJvmKt (kotlin.coroutines.intrinsics)
()
CreationCoroutineStackFrame startCoroutineCancellable:!LINE_NUMBER!, CancellableKt (kotlinx.coroutines.intrinsics)
()
CreationCoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
()
CreationCoroutineStackFrame main:!LINE_NUMBER!, SuspendFunWithInnerKt (continuation)
()
CreationCoroutineStackFrame FRAME:main:-1, SuspendFunWithInnerKt (continuation)
()
Disconnected from the target VM
Process finished with exit code 0
@@ -3,24 +3,24 @@ Run Java
Connected to the target VM
suspendLambda.kt:12
Thread stack trace:
nextSequence:12, SuspendLambdaKt (continuation)
KotlinStackFrame nextSequence:!LINE_NUMBER!, SuspendLambdaKt (continuation)
(terms, terms1)
invokeSuspend:23, SuspendLambdaKt$fibonacci$1 (continuation)
CoroutinePreflightFrame invokeSuspend:!LINE_NUMBER!, SuspendLambdaKt$fibonacci$1 (continuation)
($result, $this$sequence, step, terms, this)
CoroutineNameIdState(name=coroutine, id=-1, state=UNKNOWN, dispatcher=null)
resumeWith:33, kotlin.coroutines.jvm.internal.BaseContinuationImpl
CoroutineInfo: -1 coroutine UNKNOWN
CoroutineStackFrame resumeWith:!LINE_NUMBER!, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
($i$a$-with-BaseContinuationImpl$resumeWith$1, $this$with, completion, current, param, result, this)
hasNext:140, kotlin.sequences.SequenceBuilderIterator
CoroutineStackFrame hasNext:!LINE_NUMBER!, SequenceBuilderIterator (kotlin.sequences)
(step, this)
hasNext:406, kotlin.sequences.TakeSequence$iterator$1
CoroutineStackFrame hasNext:!LINE_NUMBER!, TakeSequence$iterator$1 (kotlin.sequences)
(this)
toCollection:722, kotlin.sequences.SequencesKt___SequencesKt
CoroutineStackFrame toCollection:!LINE_NUMBER!, SequencesKt___SequencesKt (kotlin.sequences)
($this$toCollection, destination)
toMutableList:752, kotlin.sequences.SequencesKt___SequencesKt
CoroutineStackFrame toMutableList:!LINE_NUMBER!, SequencesKt___SequencesKt (kotlin.sequences)
($this$toMutableList)
toList:743, kotlin.sequences.SequencesKt___SequencesKt
CoroutineStackFrame toList:!LINE_NUMBER!, SequencesKt___SequencesKt (kotlin.sequences)
($this$toList)
main:5, continuation.SuspendLambdaKt
CoroutineStackFrame main:!LINE_NUMBER!, SuspendLambdaKt (continuation)
(a)
Disconnected from the target VM
@@ -3,43 +3,43 @@ Run Java
Connected to the target VM
coroutineSuspendFun.kt:29
Thread stack trace:
c:29, CoroutineSuspendFunKt (continuation)
KotlinStackFrame c:!LINE_NUMBER!, CoroutineSuspendFunKt (continuation)
($completion, c, paramB)
b:23, CoroutineSuspendFunKt (continuation)
CoroutinePreflightFrame b:!LINE_NUMBER!, CoroutineSuspendFunKt (continuation)
($completion, $continuation, $result, b, paramA)
CoroutineNameIdState(name=coroutine, id=1, state=RUNNING, dispatcher=BlockingEventLoop@6f45df59)
a:16, CoroutineSuspendFunKt (continuation)
CoroutineInfo: 1 coroutine RUNNING
CoroutineStackFrame a:!LINE_NUMBER!, CoroutineSuspendFunKt (continuation)
(a)
invokeSuspend:10, CoroutineSuspendFunKt$main$1 (continuation)
CoroutineStackFrame invokeSuspend:!LINE_NUMBER!, CoroutineSuspendFunKt$main$1 (continuation)
($this$runBlocking)
resumeWith:33, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
CoroutineStackFrame resumeWith:!LINE_NUMBER!, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
($i$a$-with-BaseContinuationImpl$resumeWith$1, $this$with, completion, current, param, result, this)
run:56, DispatchedTask (kotlinx.coroutines)
CoroutineStackFrame run:!LINE_NUMBER!, DispatchedTask (kotlinx.coroutines)
($i$a$-withCoroutineContext-DispatchedTask$run$1, $i$f$withCoroutineContext, context, continuation, countOrElement$iv, delegate, exception, fatalException, job, oldValue$iv, state, taskContext, this)
processNextEvent:272, EventLoopImplBase (kotlinx.coroutines)
CoroutineStackFrame processNextEvent:!LINE_NUMBER!, EventLoopImplBase (kotlinx.coroutines)
(delayed, this)
joinBlocking:79, BlockingCoroutine (kotlinx.coroutines)
CoroutineStackFrame joinBlocking:!LINE_NUMBER!, BlockingCoroutine (kotlinx.coroutines)
(this)
runBlocking:54, BuildersKt__BuildersKt (kotlinx.coroutines)
CoroutineStackFrame runBlocking:!LINE_NUMBER!, BuildersKt__BuildersKt (kotlinx.coroutines)
(block, context, contextInterceptor, coroutine, currentThread, eventLoop, newContext)
runBlocking:1, BuildersKt (kotlinx.coroutines)
CoroutineStackFrame runBlocking:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
(block, context)
CoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt__BuildersKt (kotlinx.coroutines)
()
runBlocking$default:36, BuildersKt__BuildersKt (kotlinx.coroutines)
CoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
()
runBlocking$default:1, BuildersKt (kotlinx.coroutines)
()
main:9, CoroutineSuspendFunKt (continuation)
CoroutineStackFrame main:!LINE_NUMBER!, CoroutineSuspendFunKt (continuation)
(main)
Creation stack frame
createCoroutineUnintercepted:116, IntrinsicsKt__IntrinsicsJvmKt (kotlin.coroutines.intrinsics)
Coroutine creation stack trace
CreationCoroutineStackFrame createCoroutineUnintercepted:!LINE_NUMBER!, IntrinsicsKt__IntrinsicsJvmKt (kotlin.coroutines.intrinsics)
()
startCoroutineCancellable:26, CancellableKt (kotlinx.coroutines.intrinsics)
CreationCoroutineStackFrame startCoroutineCancellable:!LINE_NUMBER!, CancellableKt (kotlinx.coroutines.intrinsics)
()
runBlocking$default:1, BuildersKt (kotlinx.coroutines)
CreationCoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
()
main:9, CoroutineSuspendFunKt (continuation)
CreationCoroutineStackFrame main:!LINE_NUMBER!, CoroutineSuspendFunKt (continuation)
()
main:-1, CoroutineSuspendFunKt (continuation)
CreationCoroutineStackFrame FRAME:main:-1, CoroutineSuspendFunKt (continuation)
()
Disconnected from the target VM
@@ -1,5 +1,5 @@
package continuation
// ATTACH_LIBRARY: maven(org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.5-SNAPSHOT)-javaagent
// ATTACH_LIBRARY: maven(org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.6)-javaagent
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.yield
@@ -3,43 +3,43 @@ Run Java
Connected to the target VM
coroutineSuspendFun136.kt:29
Thread stack trace:
c:29, CoroutineSuspendFun136Kt (continuation)
KotlinStackFrame c:!LINE_NUMBER!, CoroutineSuspendFun136Kt (continuation)
($completion, c, paramB)
b:23, CoroutineSuspendFun136Kt (continuation)
CoroutinePreflightFrame b:!LINE_NUMBER!, CoroutineSuspendFun136Kt (continuation)
($completion, $continuation, $result, b, paramA)
CoroutineNameIdState(name=coroutine, id=1, state=RUNNING, dispatcher=BlockingEventLoop@305fd85d)
a:16, CoroutineSuspendFun136Kt (continuation)
CoroutineInfo: 1 coroutine RUNNING
CoroutineStackFrame a:!LINE_NUMBER!, CoroutineSuspendFun136Kt (continuation)
(a)
invokeSuspend:10, CoroutineSuspendFun136Kt$main$1 (continuation)
CoroutineStackFrame invokeSuspend:!LINE_NUMBER!, CoroutineSuspendFun136Kt$main$1 (continuation)
($this$runBlocking)
resumeWith:33, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
CoroutineStackFrame resumeWith:!LINE_NUMBER!, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
($i$a$-with-BaseContinuationImpl$resumeWith$1, $this$with, completion, current, param, result, this)
run:56, DispatchedTask (kotlinx.coroutines)
CoroutineStackFrame run:!LINE_NUMBER!, DispatchedTask (kotlinx.coroutines)
($i$a$-withCoroutineContext-DispatchedTask$run$1, $i$f$withCoroutineContext, context, continuation, countOrElement$iv, delegate, exception, fatalException, job, oldValue$iv, state, taskContext, this)
processNextEvent:274, EventLoopImplBase (kotlinx.coroutines)
CoroutineStackFrame processNextEvent:!LINE_NUMBER!, EventLoopImplBase (kotlinx.coroutines)
(delayed, task, this)
joinBlocking:79, BlockingCoroutine (kotlinx.coroutines)
CoroutineStackFrame joinBlocking:!LINE_NUMBER!, BlockingCoroutine (kotlinx.coroutines)
(this)
runBlocking:54, BuildersKt__BuildersKt (kotlinx.coroutines)
CoroutineStackFrame runBlocking:!LINE_NUMBER!, BuildersKt__BuildersKt (kotlinx.coroutines)
(block, context, contextInterceptor, coroutine, currentThread, eventLoop, newContext)
runBlocking:1, BuildersKt (kotlinx.coroutines)
CoroutineStackFrame runBlocking:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
(block, context)
CoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt__BuildersKt (kotlinx.coroutines)
()
runBlocking$default:36, BuildersKt__BuildersKt (kotlinx.coroutines)
CoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
()
runBlocking$default:1, BuildersKt (kotlinx.coroutines)
()
main:9, CoroutineSuspendFun136Kt (continuation)
CoroutineStackFrame main:!LINE_NUMBER!, CoroutineSuspendFun136Kt (continuation)
(main)
Creation stack frame
createCoroutineUnintercepted:116, IntrinsicsKt__IntrinsicsJvmKt (kotlin.coroutines.intrinsics)
Coroutine creation stack trace
CreationCoroutineStackFrame createCoroutineUnintercepted:!LINE_NUMBER!, IntrinsicsKt__IntrinsicsJvmKt (kotlin.coroutines.intrinsics)
()
startCoroutineCancellable:26, CancellableKt (kotlinx.coroutines.intrinsics)
CreationCoroutineStackFrame startCoroutineCancellable:!LINE_NUMBER!, CancellableKt (kotlinx.coroutines.intrinsics)
()
runBlocking$default:1, BuildersKt (kotlinx.coroutines)
CreationCoroutineStackFrame runBlocking$default:!LINE_NUMBER!, BuildersKt (kotlinx.coroutines)
()
main:9, CoroutineSuspendFun136Kt (continuation)
CreationCoroutineStackFrame main:!LINE_NUMBER!, CoroutineSuspendFun136Kt (continuation)
()
main:-1, CoroutineSuspendFun136Kt (continuation)
CreationCoroutineStackFrame FRAME:main:-1, CoroutineSuspendFun136Kt (continuation)
()
Disconnected from the target VM
@@ -3,22 +3,22 @@ Run Java
Connected to the target VM
suspendMain.kt:15
Thread stack trace:
invokeSuspend:15, SuspendMainKt$main$2 (continuation)
CoroutinePreflightFrame invokeSuspend:!LINE_NUMBER!, SuspendMainKt$main$2 (continuation)
($result, $this$coroutineScope, this)
CoroutineNameIdState(name=coroutine, id=-1, state=UNKNOWN, dispatcher=null)
startUndispatchedOrReturn:91, UndispatchedKt (kotlinx.coroutines.intrinsics)
CoroutineInfo: -1 coroutine UNKNOWN
CoroutineStackFrame startUndispatchedOrReturn:!LINE_NUMBER!, UndispatchedKt (kotlinx.coroutines.intrinsics)
($i$a$-undispatchedResult-UndispatchedKt$startUndispatchedOrReturn$2, $i$f$undispatchedResult, $this$startUndispatchedOrReturn, $this$undispatchedResult$iv, block, receiver)
coroutineScope:177, CoroutineScopeKt (kotlinx.coroutines)
CoroutineStackFrame coroutineScope:!LINE_NUMBER!, CoroutineScopeKt (kotlinx.coroutines)
($completion, $i$a$-suspendCoroutineUninterceptedOrReturn-CoroutineScopeKt$coroutineScope$2, block, coroutine, uCont)
main:9, SuspendMainKt (continuation)
CoroutineStackFrame main:!LINE_NUMBER!, SuspendMainKt (continuation)
($completion)
invokeSuspend:86, IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1 (kotlin.coroutines.intrinsics)
CoroutineStackFrame invokeSuspend:!LINE_NUMBER!, IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1 (kotlin.coroutines.intrinsics)
($i$a$-createCoroutineFromSuspendFunction-IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$1, it, result, this)
resumeWith:33, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
CoroutineStackFrame resumeWith:!LINE_NUMBER!, BaseContinuationImpl (kotlin.coroutines.jvm.internal)
($i$a$-with-BaseContinuationImpl$resumeWith$1, $this$with, completion, current, param, result, this)
startCoroutine:114, ContinuationKt (kotlin.coroutines)
CoroutineStackFrame startCoroutine:!LINE_NUMBER!, ContinuationKt (kotlin.coroutines)
($this$startCoroutine, completion)
runSuspend:19, RunSuspendKt (kotlin.coroutines.jvm.internal)
CoroutineStackFrame runSuspend:!LINE_NUMBER!, RunSuspendKt (kotlin.coroutines.jvm.internal)
(block, run)
Disconnected from the target VM