diff --git a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/proxy/mirror/coroutinesDebugMirror.kt b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/proxy/mirror/coroutinesDebugMirror.kt index 9fb37f4f693..87cf1afaea7 100644 --- a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/proxy/mirror/coroutinesDebugMirror.kt +++ b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/proxy/mirror/coroutinesDebugMirror.kt @@ -42,7 +42,7 @@ class DebugProbesImpl private constructor(context: DefaultExecutionContext) : fun dumpCoroutinesInfo(context: DefaultExecutionContext): List { instance ?: return emptyList() - val coroutinesInfoReference = objectValue(instance, dumpMethod, context) + val coroutinesInfoReference = context.keepReference(objectValue(instance, dumpMethod, context)) val referenceList = javaLangListMirror.mirror(coroutinesInfoReference, context) ?: return emptyList() return referenceList.values.mapNotNull { coroutineInfo.mirror(it, context) } } diff --git a/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/ExecutionContext.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/ExecutionContext.kt index f55504da52f..5c46587220d 100644 --- a/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/ExecutionContext.kt +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/evaluate/ExecutionContext.kt @@ -42,6 +42,13 @@ class DefaultExecutionContext(evaluationContext: EvaluationContextImpl) : BaseEx val frameProxy: StackFrameProxyImpl? get() = evaluationContext.frameProxy + + fun keepReference(ref: ObjectReference?): ObjectReference? { + ref?.let { + super.keepReference(ref) + } + return ref + } } sealed class BaseExecutionContext(val evaluationContext: EvaluationContextImpl) {