From 22cfde3d4322da06496ec57571e38ab3c96df434 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Mon, 2 Jul 2018 16:32:29 +0300 Subject: [PATCH] Debugger: Check if the class instance is not yet collected before usage (EA-118758) --- .../kotlin/idea/debugger/DebuggerClassNameProvider.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DebuggerClassNameProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DebuggerClassNameProvider.kt index d173f6b764b..722abf8aa85 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DebuggerClassNameProvider.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/DebuggerClassNameProvider.kt @@ -22,6 +22,7 @@ import com.intellij.debugger.engine.DebuggerUtils import com.intellij.psi.PsiElement import com.intellij.psi.util.PsiTreeUtil import com.sun.jdi.AbsentInformationException +import com.sun.jdi.ObjectCollectedException import com.sun.jdi.ReferenceType import org.jetbrains.kotlin.codegen.binding.CodegenBinding.asmTypeForAnonymousClass import org.jetbrains.kotlin.codegen.binding.CodegenBinding.asmTypeForAnonymousClassOrNull @@ -268,7 +269,14 @@ private fun String.toJdiName() = replace('/', '.') private fun DebugProcess.findTargetClasses(outerClass: ReferenceType, lineAt: Int): List { val vmProxy = virtualMachineProxy - if (!outerClass.isPrepared) return emptyList() + + try { + if (!outerClass.isPrepared) { + return emptyList() + } + } catch (e: ObjectCollectedException) { + return emptyList() + } val targetClasses = ArrayList(1)