Status Update
Comments
kd...@google.com <kd...@google.com>
je...@google.com <je...@google.com>
ph...@gmail.com <ph...@gmail.com> #3
This looks to be related to either Lint or the Kotlin Plugin. Redirecting this bug to the Lint team to take a first look.
The EDT is waiting for a write lock, while the thread running Lint is blocking it with a long-running operation in a read lock. From the stack, it's not clear to me if the Lint code is doing a bunch of stuff without checking for cancellation (in which case adding cancellation checks would probably resolve this), or if it's logic within the Kotlin plugin that is blocking for a longer amount of time.
"DefaultDispatcher-worker-12" prio=0 tid=0x0 nid=0x0 runnable
java.lang.Thread.State: RUNNABLE
at com.intellij.platform.instanceContainer.internal.InstanceContainerImpl.getInstanceHolder(InstanceContainerImpl.kt:99)
at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:717)
at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:695)
at org.jetbrains.uast.kotlin.KotlinAbstractUElement.getBaseResolveProviderService(KotlinAbstractUElement.kt:27)
at org.jetbrains.uast.kotlin.KotlinAbstractUElement.convertParent(KotlinAbstractUElement.kt:41)
at org.jetbrains.uast.kotlin.KotlinAbstractUElement.getUastParent(KotlinAbstractUElement.kt:34)
at org.jetbrains.uast.UastUtils__UastUtilsKt.getParentOfType(UastUtils.kt:28)
at org.jetbrains.uast.UastUtils.getParentOfType(Unknown Source)
at org.jetbrains.uast.kotlin.psi.UastKotlinPsiParameter$Companion.create$kotlin_uast_uast_kotlin_base(UastKotlinPsiParameter.kt:77)
at org.jetbrains.uast.kotlin.KotlinULambdaExpression.getParameters(KotlinULambdaExpression.kt:71)
at org.jetbrains.uast.kotlin.KotlinULambdaExpression.getValueParameters(KotlinULambdaExpression.kt:61)
at org.jetbrains.uast.kotlin.BaseKotlinConverter.convertParameter$lambda$41(BaseKotlinConverter.kt:413)
at org.jetbrains.uast.kotlin.BaseKotlinConverter$$Lambda/0x0000000803cc6ed8.invoke(Unknown Source)
at org.jetbrains.uast.internal.ImplementationUtilsKt.accommodate$lambda$2(implementationUtils.kt:30)
at org.jetbrains.uast.internal.ImplementationUtilsKt$$Lambda/0x00000008037dd688.invoke(Unknown Source)
at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210)
at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:170)
at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:194)
at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:172)
at org.jetbrains.uast.kotlin.BaseKotlinConverter.convertDeclaration(BaseKotlinConverter.kt:233)
at org.jetbrains.uast.kotlin.BaseKotlinConverter.convertDeclarationOrElement(BaseKotlinConverter.kt:294)
at org.jetbrains.uast.kotlin.KotlinUastLanguagePlugin.convertElementWithParent(KotlinUastLanguagePlugin.kt:53)
at org.jetbrains.uast.UastFacade.convertElementWithParent(UastContext.kt:66)
at org.jetbrains.uast.UastContextKt.toUElement(UastContext.kt:145)
at org.jetbrains.uast.kotlin.BaseKotlinInternalUastUtilsKt.getMaybeLightElement(baseKotlinInternalUastUtils.kt:147)
at org.jetbrains.uast.kotlin.KotlinInternalUastUtilsKt.resolveToDeclarationImpl(kotlinInternalUastUtils.kt:421)
at org.jetbrains.uast.kotlin.KotlinInternalUastUtilsKt.resolveToDeclarationImpl(kotlinInternalUastUtils.kt:414)
at org.jetbrains.uast.kotlin.KotlinUastResolveProviderService.resolveToDeclaration(KotlinUastResolveProviderService.kt:388)
at org.jetbrains.uast.kotlin.KotlinUSimpleReferenceExpression.getResolvedDeclaration(KotlinUSimpleReferenceExpression.kt:37)
at org.jetbrains.uast.kotlin.KotlinUSimpleReferenceExpression.resolve(KotlinUSimpleReferenceExpression.kt:44)
at com.android.tools.lint.client.api.AnnotationHandler$checkContextAnnotations$1.visitSimpleNameReferenceExpression(AnnotationHandler.kt:219)
at org.jetbrains.uast.kotlin.KotlinUSimpleReferenceExpression.accept(KotlinUSimpleReferenceExpression.kt:58)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:33)
at org.jetbrains.uast.UBinaryExpression.accept(UBinaryExpression.kt:42)
at org.jetbrains.uast.UParenthesizedExpression.accept(UParenthesizedExpression.kt:21)
at org.jetbrains.uast.UBinaryExpression.accept(UBinaryExpression.kt:42)
at org.jetbrains.uast.UIfExpression.accept(UIfExpression.kt:58)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.kotlin.KotlinUSimpleReferenceExpression.visitAccessorCalls(KotlinUSimpleReferenceExpression.kt:86)
at org.jetbrains.uast.kotlin.KotlinUSimpleReferenceExpression.accept(KotlinUSimpleReferenceExpression.kt:61)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.UBinaryExpression.accept(UBinaryExpression.kt:42)
at org.jetbrains.uast.UReturnExpression.accept(UReturnExpression.kt:22)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.UReturnExpression.accept(UReturnExpression.kt:22)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.UMethod.accept(UMethod.kt:45)
at com.android.tools.lint.client.api.AnnotationHandler.checkContextAnnotations(AnnotationHandler.kt:214)
at com.android.tools.lint.client.api.AnnotationHandler.visitVariable(AnnotationHandler.kt:1082)
at com.android.tools.lint.client.api.UElementVisitor$DelegatingUastVisitor.visitVariable(UElementVisitor.kt:840)
at org.jetbrains.uast.visitor.UastVisitor.visitParameter(UastVisitor.kt:16)
at com.android.tools.lint.client.api.UElementVisitor$DispatchUastVisitor.visitParameter(UElementVisitor.kt:551)
at com.android.tools.lint.client.api.UElementVisitor$DelegatingUastVisitor.visitParameter(UElementVisitor.kt:889)
at org.jetbrains.uast.UParameter.accept(UVariable.kt:80)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.kotlin.KotlinUCatchClause.accept(KotlinUCatchClause.kt:55)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UTryExpression.accept(UTryExpression.kt:79)
at org.jetbrains.uast.UReturnExpression.accept(UReturnExpression.kt:22)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.UReturnExpression.accept(UReturnExpression.kt:22)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.UReturnExpression.accept(UReturnExpression.kt:22)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UReturnExpression.accept(UReturnExpression.kt:22)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.UBinaryExpression.accept(UBinaryExpression.kt:43)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.kotlin.KotlinULocalVariable.accept(KotlinULocalVariable.kt:46)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UDeclarationsExpression.accept(UDeclarationsExpression.kt:22)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UExpressionList.accept(UExpressionList.kt:26)
at org.jetbrains.uast.UReturnExpression.accept(UReturnExpression.kt:22)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.UReturnExpression.accept(UReturnExpression.kt:22)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.UBinaryExpression.accept(UBinaryExpression.kt:43)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.UMethod.accept(UMethod.kt:45)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.kotlin.AbstractKotlinUClass.accept(AbstractKotlinUClass.kt:213)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UFile.accept(UFile.kt:89)
at com.android.tools.lint.detector.api.UastLintUtilsKt.acceptSourceFile(UastLintUtils.kt:992)
at com.android.tools.lint.client.api.UElementVisitor.visitFile$lambda$5(UElementVisitor.kt:216)
at com.android.tools.lint.client.api.UElementVisitor$$Lambda/0x0000000803fd0d58.run(Unknown Source)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.tryRunReadAction(AnyThreadWriteThreadingSupport.kt:333)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:971)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:95)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils$$Lambda/0x0000000801625000.run(Unknown Source)
at com.intellij.openapi.progress.util.ProgressIndicatorUtilService.runActionAndCancelBeforeWrite(ProgressIndicatorUtilService.java:66)
...
ph...@gmail.com <ph...@gmail.com> #4
Adding more freezes for you
hu...@google.com <hu...@google.com> #5
The problem is so severe that it is difficult to use this release.
ph...@gmail.com <ph...@gmail.com> #6
It is hanging everywhere now in AS2024.3.1.5:
Android Studio Meerkat | 2024.3.1 Canary 5
Build #AI-243.21565.193.2431.12752199, built on December 5, 2024
Runtime version: 21.0.5+-12651406-b631.16 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Toolkit: sun.awt.windows.WToolkit
Windows 11.0
GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation
Memory: 4050M
Cores: 20
Registry:
ide.experimental.ui=true
i18n.locale=
ide.images.show.chessboard=true
terminal.new.ui=true
Adding more logs.
ph...@gmail.com <ph...@gmail.com> #7
Some new hang reports, if it helps...
hu...@google.com <hu...@google.com> #8
Still hanging everywhere in AS2024.3.1.6
You MUST prioritize this issue, i don't like reverting back because here are so much other good stuff which is fixed...
da...@google.com <da...@google.com>
da...@google.com <da...@google.com> #9
May be not related, but I took look at the last log:
2024-12-17 10:56:19,614 [1220737] INFO - #com.android.tools.idea.gradle.run.MakeBeforeRunTask - Gradle invocation complete, build result = com.android.tools.idea.gradle.project.build.invoker.AssembleInvocationResult@99befcf
2024-12-17 10:56:19,615 [1220738] SEVERE - #c.i.u.SlowOperations - Slow operations are prohibited on EDT. See SlowOperations.assertSlowOperationsAreAllowed javadoc.
java.lang.Throwable: Slow operations are prohibited on EDT. See SlowOperations.assertSlowOperationsAreAllowed javadoc.
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:376)
at com.intellij.util.SlowOperations.assertSlowOperationsAreAllowed(SlowOperations.java:114)
at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexDataImpl.ensureIsUpToDate(WorkspaceFileIndexDataImpl.kt:153)
at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexDataImpl.getFileInfo(WorkspaceFileIndexDataImpl.kt:98)
at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexImpl.getFileInfo(WorkspaceFileIndexImpl.kt:267)
at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexImpl.findFileSet(WorkspaceFileIndexImpl.kt:220)
at com.intellij.openapi.roots.impl.ProjectFileIndexImpl.isInProject(ProjectFileIndexImpl.java:84)
at com.intellij.psi.search.ProjectAndLibrariesScope.contains(ProjectAndLibrariesScope.java:33)
at com.intellij.psi.search.ProjectScopeBuilderImpl$3.contains(ProjectScopeBuilderImpl.java:92)
at com.android.tools.idea.editors.build.PsiCodeFileChangeDetectorService.prepareMarkUpToDate$lambda$2(PsiCodeFileChangeDetectorService.kt:230)
at com.android.tools.idea.editors.build.RenderingBuildStatusManagerImpl$buildListener$1.buildStarted$handleSuccess$lambda$0(RenderingBuildStatusManager.kt:210)
at com.intellij.util.SlowOperations.allowSlowOperations(SlowOperations.java:205)
at com.android.tools.idea.editors.build.RenderingBuildStatusManagerImpl$buildListener$1.buildStarted$handleSuccess(RenderingBuildStatusManager.kt:209)
at com.android.tools.idea.editors.build.RenderingBuildStatusManagerImpl$buildListener$1.buildStarted$handleBuildResult(RenderingBuildStatusManager.kt:219)
at com.android.tools.idea.editors.build.RenderingBuildStatusManagerImpl$buildListener$1.access$buildStarted$handleBuildResult(RenderingBuildStatusManager.kt:185)
at com.android.tools.idea.editors.build.RenderingBuildStatusManagerImpl$buildListener$1$buildStarted$1$1.invokeSuspend(RenderingBuildStatusManager.kt:229)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:236)
at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:25)
at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:198)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runIntendedWriteActionOnCurrentThread$lambda$2(AnyThreadWriteThreadingSupport.kt:217)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:128)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runIntendedWriteActionOnCurrentThread(AnyThreadWriteThreadingSupport.kt:216)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:842)
at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:434)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:117)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:43)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:675)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:573)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$18$lambda$17$lambda$16$lambda$15(IdeEventQueue.kt:355)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:857)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$18$lambda$17$lambda$16(IdeEventQueue.kt:354)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$2$lambda$1(IdeEventQueue.kt:1045)
at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:128)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:916)
at com.intellij.openapi.application.WriteIntentReadAction.compute(WriteIntentReadAction.java:55)
at com.intellij.openapi.application.WriteIntentReadAction.run(WriteIntentReadAction.java:23)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$2(IdeEventQueue.kt:1045)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$3(IdeEventQueue.kt:1054)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:109)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1054)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$18(IdeEventQueue.kt:349)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:395)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
2024-12-17 10:56:19,616 [1220739] SEVERE - #c.i.u.SlowOperations - Android Studio Meerkat | 2024.3.1 Canary 6 Build #AI-243.22562.145.2431.12789491
2024-12-17 10:56:19,616 [1220739] SEVERE - #c.i.u.SlowOperations - JDK: 21.0.5; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o.
2024-12-17 10:56:19,616 [1220739] SEVERE - #c.i.u.SlowOperations - OS: Windows 11
2024-12-17 10:56:19,616 [1220739] SEVERE - #c.i.u.SlowOperations - Last Action: Run
and some reference to that I am not running Linux subsystem (wsl.exe), is that a request in Meerkat ?
2024-12-17 11:04:24,832 [1705955] WARN - #c.i.e.w.WslDistributionManager - Failed to run C:\WINDOWS\system32\wsl.exe --list --verbose: {exitCode=1, timeout=false, cancelled=false, stdout=, stderr=Windows-undersystem for Linux er ikke installert. Du kan installere ved å kjøre wsl.exe --install.
Hvis du vil ha mer informasjon, kan du gå til https://aka.ms/wslinstall
}, done in 52 ms
java.io.IOException: Failed to run C:\WINDOWS\system32\wsl.exe --list --verbose: {exitCode=1, timeout=false, cancelled=false, stdout=, stderr=Windows-undersystem for Linux er ikke installert. Du kan installere ved å kjøre wsl.exe --install.
Hvis du vil ha mer informasjon, kan du gå til https://aka.ms/wslinstall
}, done in 52 ms
at com.intellij.execution.wsl.WslDistributionManagerImpl.loadInstalledDistributionsWithVersions(WslDistributionManagerImpl.java:85)
at com.intellij.execution.wsl.WslDistributionManager.loadInstalledDistributions(WslDistributionManager.java:167)
at com.intellij.execution.wsl.WslDistributionManager.getInstalledDistributions(WslDistributionManager.java:86)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source)
at com.intellij.util.concurrency.ChildContext$runInChildContext$1.invoke(propagation.kt:101)
at com.intellij.util.concurrency.ChildContext$runInChildContext$1.invoke(propagation.kt:101)
at com.intellij.util.concurrency.ChildContext.runInChildContext(propagation.kt:107)
at com.intellij.util.concurrency.ChildContext.runInChildContext(propagation.kt:101)
at com.intellij.util.concurrency.ContextRunnable.run(ContextRunnable.java:27)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Unknown Source)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
2024-12-17 11:04:24,868 [1705991] INFO - #c.i.e.w.WslDistributionManager - Cannot parse WSL distributions
java.io.IOException: Failed to run C:\WINDOWS\system32\wsl.exe --list --quiet: {exitCode=1, timeout=false, cancelled=false, stdout=, stderr=Windows-undersystem for Linux er ikke installert. Du kan installere ved å kjøre wsl.exe --install.
Hvis du vil ha mer informasjon, kan du gå til https://aka.ms/wslinstall
}
at com.intellij.execution.wsl.WslDistributionManagerImpl.doFetchDistributionsFromWslCli(WslDistributionManagerImpl.java:156)
at com.intellij.execution.wsl.WslDistributionManagerImpl.loadInstalledDistributionMsIds(WslDistributionManagerImpl.java:41)
at com.intellij.execution.wsl.WslDistributionManager.loadInstalledDistributions(WslDistributionManager.java:182)
at com.intellij.execution.wsl.WslDistributionManager.getInstalledDistributions(WslDistributionManager.java:86)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source)
at com.intellij.util.concurrency.ChildContext$runInChildContext$1.invoke(propagation.kt:101)
at com.intellij.util.concurrency.ChildContext$runInChildContext$1.invoke(propagation.kt:101)
at com.intellij.util.concurrency.ChildContext.runInChildContext(propagation.kt:107)
at com.intellij.util.concurrency.ChildContext.runInChildContext(propagation.kt:101)
at com.intellij.util.concurrency.ContextRunnable.run(ContextRunnable.java:27)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Unknown Source)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
2024-12-17 11:04:31,699 [1712822] INFO - #c.i.o.p.DumbServiceImpl - enter dumb mode [Norva24 MSlam]
2024-12-17 11:04:31,743 [1712866] INFO - #c.i.o.p.MergingQueueGuiExecutor - Running task: (dumb mode task) com.intellij.openapi.roots.impl.PushedFilePropertiesUpdaterImpl$MyDumbModeTask@423a3c5 (reason: Push on VFS changes)
2024-12-17 11:04:31,752 [1712875] INFO - #c.i.o.p.MergingQueueGuiExecutor - Task finished: (dumb mode task) com.intellij.openapi.roots.impl.PushedFilePropertiesUpdaterImpl$MyDumbModeTask@423a3c5 (reason: Push on VFS changes)
2024-12-17 11:04:31,802 [1712925] INFO - #c.i.o.p.DumbServiceImpl - exit dumb mode [Norva24 MSlam]
2024-12-17 11:04:31,908 [1713031] INFO - #o.j.p.g.GradleManager - Instructing gradle to use java from C:/Program Files/Android Studio/Android Studio 2024.2.2.7/jbr
2024-12-17 11:04:32,039 [1713162] INFO - #o.j.p.g.GradleManager - Instructing gradle to use java from C:/Program Files/Android Studio/Android Studio 2024.2.2.7/jbr
2024-12-17 11:04:55,832 [1736955] INFO - #com.android.studio.ml.aida.AidaMetrics - Completion CES response:
2024-12-17 11:07:25,597 [1886720] WARN - #c.i.i.a.CopyTBXReferenceAction - Cannot find TBX tool for IDE: AndroidStudio
an...@google.com <an...@google.com> #10
Paul pointed out that
It looks like it often involves the following, but not always:
at com.android.tools.lint.client.api.AnnotationHandler.checkContextAnnotations(AnnotationHandler.kt:214) at com.android.tools.lint.client.api.AnnotationHandler.visitVariable(AnnotationHandler.kt:1082)
Indeed, at
1. catch clause parameter
at org.jetbrains.uast.kotlin.KotlinUSimpleReferenceExpression.resolve(KotlinUSimpleReferenceExpression.kt:44)
at com.android.tools.lint.client.api.AnnotationHandler$checkContextAnnotations$1.visitSimpleNameReferenceExpression(AnnotationHandler.kt:219)
at org.jetbrains.uast.kotlin.KotlinUSimpleReferenceExpression.accept(KotlinUSimpleReferenceExpression.kt:58)
...
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.UMethod.accept(UMethod.kt:45)
at com.android.tools.lint.client.api.AnnotationHandler.checkContextAnnotations(AnnotationHandler.kt:214)
at com.android.tools.lint.client.api.AnnotationHandler.visitVariable(AnnotationHandler.kt:1082)
at com.android.tools.lint.client.api.UElementVisitor$DelegatingUastVisitor.visitVariable(UElementVisitor.kt:840)
at org.jetbrains.uast.visitor.UastVisitor.visitParameter(UastVisitor.kt:16)
at com.android.tools.lint.client.api.UElementVisitor$DispatchUastVisitor.visitParameter(UElementVisitor.kt:551)
at com.android.tools.lint.client.api.UElementVisitor$DelegatingUastVisitor.visitParameter(UElementVisitor.kt:889)
at org.jetbrains.uast.UParameter.accept(UVariable.kt:80)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.kotlin.KotlinUCatchClause.accept(KotlinUCatchClause.kt:55)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UTryExpression.accept(UTryExpression.kt:79)
also some other logs:
2. lambda parameter
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.UMethod.accept(UMethod.kt:45)
at com.android.tools.lint.client.api.AnnotationHandler.checkContextAnnotations(AnnotationHandler.kt:214)
at com.android.tools.lint.client.api.AnnotationHandler.visitVariable(AnnotationHandler.kt:1082)
at com.android.tools.lint.client.api.UElementVisitor$DelegatingUastVisitor.visitVariable(UElementVisitor.kt:840)
at org.jetbrains.uast.visitor.UastVisitor.visitParameter(UastVisitor.kt:16)
at com.android.tools.lint.client.api.UElementVisitor$DispatchUastVisitor.visitParameter(UElementVisitor.kt:551)
at com.android.tools.lint.client.api.UElementVisitor$DelegatingUastVisitor.visitParameter(UElementVisitor.kt:889)
at org.jetbrains.uast.UParameter.accept(UVariable.kt:80)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:39)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.ULambdaExpression.accept(ULambdaExpression.kt:40)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UCallExpression.accept(UCallExpression.kt:98)
at org.jetbrains.uast.UQualifiedReferenceExpression.accept(UQualifiedReferenceExpression.kt:34)
at org.jetbrains.uast.UBinaryExpression.accept(UBinaryExpression.kt:43)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.UMethod.accept(UMethod.kt:45)
3. local variable inside a lambda
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
at org.jetbrains.uast.UMethod.accept(UMethod.kt:45)
at com.android.tools.lint.client.api.AnnotationHandler.checkContextAnnotations(AnnotationHandler.kt:214)
at com.android.tools.lint.client.api.AnnotationHandler.visitVariable(AnnotationHandler.kt:1082)
at com.android.tools.lint.client.api.UElementVisitor$DelegatingUastVisitor.visitVariable(UElementVisitor.kt:840)
at org.jetbrains.uast.visitor.UastVisitor.visitField(UastVisitor.kt:17)
at com.android.tools.lint.client.api.UElementVisitor$DispatchUastVisitor.visitField(UElementVisitor.kt:478)
at org.jetbrains.uast.kotlin.KotlinUField.accept(KotlinUField.kt:57)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.kotlin.AbstractKotlinUClass.accept(AbstractKotlinUClass.kt:213)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UDeclarationsExpression.accept(UDeclarationsExpression.kt:22)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:15)
at org.jetbrains.uast.UBlockExpression.accept(UBlockExpression.kt:21)
However, all these cases look strange because my understanding is that, from
fun foo(@Anno param: Type) {
...
dontCallMeWithAnnoedParam(param)
...
}
AnnotationHandler#visitVariable
arrives at param
as function's value parameter; goes up to its containing function foo
; visits all name references in that function to see the variable usage and check if there is any violation w.r.t. the context annotation on the variable.
That is, the above call stacks look to me like:
fun containingFun(/* no arg! */) {
...
try {
blahblah = someNameToResolve + resolveMeToo
...
} catch (@Anno e: SomeException) {
... // hm... what if dontCallMeWithAnnoedParam(e) here?
}
}
or
fun <T> foo(arg: T, action: (@Anno T) -> Unit): action(arg)
fun containingFun(...) {
blahblah = someNameToResolve + noWayToSeeLambdaArg
foo(x) { lambdaArg -> // @Anno on lambdaArg?
...
object : SomeAbstractClass {
@Anno
val reallyLocalInsideThisAnonymous = ... // but still go up to containingFun?
}
...
}
}
My naive attempt of filtering only function parameter discovered a case like this:
private void problem1() {
@Tree int treeInvalid = 12;
treeInvalid = 13;
// annotations for variables or fields
@Tree int treeValid = TREE_PATH_ONE;
problem2(mTreeField); // Falsely marked as an error. Lint does not track @IntDef annotations
// fields so it does not know the mTreeField is actually a @Tree
}
So... I can see two inefficient things: 1) AnnotationHandler
visits problem1
twice, one for treeInvalid
and the other for treeValid
. (In general, we may visit the same function as many of its expressions as possible...) 2) then, in each visit, AnnotationHandler
attempts to resolve
all name references in the function body. Although resolution would be cached and reused for the next runs, I wonder this may cause a trouble like this. Or, at a minimum, say, in the above example, if only one variable is annotated, and if there are 10_000 other variables in the function body, we still need one single resolution, based on name comparison (and all the other 10_000 resolutions are simply waste of time/lock/etc).
Ideally, AnnotationHandler
should queue what functions to visit; what variable usages to look up and why (i.e., context annotations); and trigger resolutions for only name-matched references.
Description
STEPS TO REPRODUCE:
1. Checkout
2. Run the branch on GitHub using Ubuntu-latest
CMD: ./gradlew :kotlinx-uuid-core:allDevicesCheck -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect
Build Scan:
LOG:
------------------
IMPORTANT: Please read
all required information.
------------------
Studio Build:
Version of Gradle Plugin: 8.3.1, 8.4.0-beta01, 8.5.0-alpha01
Version of Gradle: 8.7
Version of Java: 17
OS: Ubuntu 22.04