MobiVM / robovm

Ahead of time compiler for JVM bytecode targetting iOS, Mac OSX and Linux
https://mobivm.github.io
942 stars 132 forks source link

4 (harmless) duplicate PluginExceptions thrown when loading an Intellij project with MobiVM plugin enabled #782

Open SonicGDX opened 2 months ago

SonicGDX commented 2 months ago

Issue details

When you load up any project with the plugin enabled, around 4 of the same PluginException (and sometimes another completely different exception is also thrown but not always) is thrown due to the plugin and shown as IDE Internal Errors. Apart from a red exclamation mark in the IntelliJ UI which shows these exceptions, nothing else wrong seems to happen and actually using MobiVM works fine. When you load a different project afterwards without closing IntelliJ, this doesn't reoccur (likely because the plugin is already loaded).

Reproduction steps/code

  1. Make sure the MobiVM plugin is enabled
  2. Close and reopen IntelliJ Idea
  3. Load any project (doesn't have to be one which uses RoboVM)
  4. Wait for and click the red exclamation mark on the bottom right corner (for Intellij's new UI) to view the exceptions.

Configuration

Build Tools:

Versions:

MacOS: 14.4.1 Apple Silicon

IntelliJ Idea Ultimate 2024.1

Build Targets:

Not relevant.


Stacktrace

com.intellij.diagnostic.PluginException: `ActionUpdateThread.OLD_EDT` is deprecated and going to be removed soon. 'org.robovm.idea.actions.GenerateXCodeProjectAction' must override `getActionUpdateThread` and chose EDT or BGT. See ActionUpdateThread javadoc. [Plugin: com.mobidevelop.robovm.intellij]
    at com.intellij.diagnostic.PluginProblemReporterImpl.createPluginExceptionByClass(PluginProblemReporterImpl.java:23)
    at com.intellij.diagnostic.PluginException.createByClass(PluginException.java:90)
    at com.intellij.diagnostic.PluginException.reportDeprecatedUsage(PluginException.java:125)
    at com.intellij.openapi.actionSystem.ActionUpdateThreadAware.getActionUpdateThread(ActionUpdateThreadAware.java:21)
    at com.intellij.openapi.actionSystem.AnAction.getActionUpdateThread(AnAction.java:199)

Sometimes this exception shows too but I can't reproduce it consistently.

Cannot create org.robovm.idea.components.RoboVmApplicationComponent

com.intellij.ide.plugins.StartupAbortedException: Fatal error initializing plugin com.mobidevelop.robovm.intellij
    at com.intellij.serviceContainer.ComponentManagerImplKt.handleComponentError(ComponentManagerImpl.kt:1455)
    at com.intellij.serviceContainer.ComponentInstanceInitializer.createInstance$suspendImpl(ComponentInstanceInitializer.kt:41)
    at com.intellij.serviceContainer.ComponentInstanceInitializer.createInstance(ComponentInstanceInitializer.kt)
    at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invokeSuspend(LazyInstanceHolder.kt:162)
    at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invoke(LazyInstanceHolder.kt)
    at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1$1.invoke(LazyInstanceHolder.kt)
    at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:167)
    at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
    at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invokeSuspend(LazyInstanceHolder.kt:160)
    at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invoke(LazyInstanceHolder.kt)
    at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder$initialize$1.invoke(LazyInstanceHolder.kt)
    at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:44)
    at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
    at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
    at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
    at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.initialize(LazyInstanceHolder.kt:145)
    at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.access$initialize(LazyInstanceHolder.kt:13)
    at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.tryInitialize(LazyInstanceHolder.kt:135)
    at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstance(LazyInstanceHolder.kt:95)
    at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstanceInCallerContext$suspendImpl(LazyInstanceHolder.kt:87)
    at com.intellij.platform.instanceContainer.internal.LazyInstanceHolder.getInstanceInCallerContext(LazyInstanceHolder.kt)
    at com.intellij.platform.instanceContainer.internal.UtilKt.preloadAllInstances(util.kt:47)
    at com.intellij.serviceContainer.ComponentManagerImpl$createInitOldComponentsTask$1.invokeSuspend(ComponentManagerImpl.kt:486)
    at com.intellij.serviceContainer.ComponentManagerImpl$createInitOldComponentsTask$1.invoke(ComponentManagerImpl.kt)
    at com.intellij.serviceContainer.ComponentManagerImpl$createInitOldComponentsTask$1.invoke(ComponentManagerImpl.kt)
    at com.intellij.platform.ide.bootstrap.AppServicePreloadingKt$postAppRegistered$3$1.invokeSuspend(appServicePreloading.kt:145)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Caused by: com.intellij.diagnostic.PluginException: Lock and IDE Queue are not ready yet [Plugin: com.mobidevelop.robovm.intellij]
    ... 43 more
Caused by: java.lang.IllegalStateException: Lock and IDE Queue are not ready yet
    at com.intellij.openapi.application.impl.RwLockHolder.notReady(RwLockHolder.kt:62)
    at com.intellij.openapi.application.impl.RwLockHolder.startWrite(RwLockHolder.kt:502)
    at com.intellij.openapi.application.impl.RwLockHolder.runWriteAction(RwLockHolder.kt:342)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:883)
    at org.robovm.idea.sdk.RoboVmSdkType.createSdkIfNotExists(RoboVmSdkType.java:135)
    at org.robovm.idea.RoboVmPlugin.extractSdk(RoboVmPlugin.java:303)
    at org.robovm.idea.components.RoboVmApplicationComponent.initComponent(RoboVmApplicationComponent.java:48)
    at com.intellij.serviceContainer.ComponentInstanceInitializer.createInstance$suspendImpl(ComponentInstanceInitializer.kt:27)
    ... 41 more
dkimitsa commented 2 months ago

hi, thank you for reporting. first issue was fixed in v2.3.21

second is going be fixed once we remove legacy code from Idea plugin