No, I don’t load optional modules.
Only for stack of getIcon() / loadIcon I think it is a must. You can also try to agree to this behavior:
- Create a static volatile INSTANCE field with null initializer
- Init this field explicitly when application is started via a listener
- Patcher will use that field to get instance
- if field is null - patcher must handle that and return original icons
This will lead to:
- If someone gets icons too early they are not patched
It would be an error anyway in the past, even crash
ok, I will try to replace all my static getInstance. I still don’t understand why this could lead to classloading issues. Anyway, I will see if users still faces these errors.
For the static volatile INSTANCE field with null initializer, this won’t work. I need to install my IconPathPatcher as soon as possible. I do this via a constructor or AppLifecycleListener. Other listeners are activated too late.
IconPathPatcher is not like other icon patchers: it has to be installed on IDE start. At least, if I install this icon patcher later, it does nothing.
I’m also facing this issue with a ModuleRootListener. In this case, I have no solution. Except replacing all my static getInstance. I’m absolutely not confident and it implies a lot of code changes, but I will see what happens.
This is JVM trouble that was always here. Reproducer:
class MyIcons {
public static final ICON = IconLoader.getIcon("some.svg")- During application load when application is null someone touches
MyIconsclass and it attempts loading via your code where you need application - NPE ICONfails with exception- JVM thinks that it is impossible to load
MyIconsand it will now always throw error that no such class exist. It will not retry loading of it
If you still do not fully understand the mechanics of a problem please avoid blaming the platform
To solve such complex cases you probably need cooperation from the platform and API and not hacks
I’m hacking nothing. And everything worked fine for years. So, no, I think we’re missing somehing.
And I’m not using IconLoader.getIcon. I use the install method to install the patcher. Then, IconPathPatcher.patchPath returns the path of the new icons. This is how the (now old) JetBrains “ToolWindow Colorful Icons“ plugin works. I simply do the same thing, with one difference: user can choose icon overrides. This is why I need to read my settings.
I have another plugin that uses IconLoader (Extra Icons), but it works perfectly, because. I’m overriding file icons, so I can use other icon patchers (IconProvider, FileIconProvider, FilePathIconProvider, and ProjectViewNodeDecorator) I can load later, then ask the IDE to refresh file icons.
No, I believe we had crashes and you do not see the full picture. The diagnostic only have shown what happened in the past already
The ClassCastException errors are very new.
Those are different, I so far do not have enough details to guess what happens there unfortunately
Yes, this tells me that you did not get the mechanics of the problem
Probably. I’m lost. I explain that I’m not using fault code (getting services in static field, IconLoader.getIcon…). I did not touch this code. It worked for 3 years. ~3 million downloads. Suddenly, with 2025.1.4 IDEs, a few users get errors. This is weird.
I uploaded a sample project which reflects what I do in my plugins:
Upload id: 2025_08_01_VKCrQmUq2LphBYqVJV11vE (file: intellij-platform-plugin-template.zip)
This is based on the official plugin template.
Gobally, I have 3 classes: the settings service, an icon patcher, and a module root listener:
package org.jetbrains.plugins.template
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.components.PersistentStateComponent
import com.intellij.openapi.components.RoamingType
import com.intellij.openapi.components.SettingsCategory
import com.intellij.openapi.components.State
import com.intellij.openapi.components.Storage
import com.intellij.util.xmlb.XmlSerializerUtil
@State(
name = "ExtraTciSettings2",
storages = [Storage(value = "lermitage-extratci2.xml", roamingType = RoamingType.DEFAULT)],
category = SettingsCategory.PLUGINS
)
class SettingsService : PersistentStateComponent<SettingsService> {
companion object {
fun getInstance(): SettingsService {
return ApplicationManager.getApplication().getService(SettingsService::class.java)
}
}
override fun getState(): SettingsService {
return this
}
override fun loadState(state: SettingsService) {
XmlSerializerUtil.copyBean<SettingsService?>(state, this)
}
var aKey: String? = "foo"
}
package org.jetbrains.plugins.template
import com.intellij.ide.AppLifecycleListener
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.util.IconLoader.installPathPatcher
import com.intellij.openapi.util.IconPathPatcher
import org.jetbrains.annotations.NonNls
class MyIconsPatcher : AppLifecycleListener, IconPathPatcher() {
@NonNls
val logger: Logger = Logger.getInstance(SettingsService::class.java)
override fun appFrameCreated(commandLineArgs: List<String?>) {
installPathPatcher(this)
}
override fun patchPath(path: String, classLoader: ClassLoader?): String? {
// IMPORTANT error on SettingsService.getInstance()
val myKey = SettingsService.getInstance().aKey
logger.warn("MyIconsPatcher:$myKey")
return null
}
}
package org.jetbrains.plugins.template
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.roots.ModuleRootEvent
import com.intellij.openapi.roots.ModuleRootListener
import org.jetbrains.annotations.NonNls
class MyProjectRootListener : ModuleRootListener {
@NonNls
val logger: Logger = Logger.getInstance(SettingsService::class.java)
override fun rootsChanged(event: ModuleRootEvent) {
ApplicationManager.getApplication().invokeLater {
// IMPORTANT error on SettingsService.getInstance()
val myKey = SettingsService.getInstance().aKey
logger.warn("MyProjectRootListener:$myKey")
}
}
}
<!-- Plugin Configuration File. Read more: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html -->
<idea-plugin>
<id>idea376370</id>
<name>IDEA-376370</name>
<vendor>JetBrains</vendor>
<depends>com.intellij.modules.platform</depends>
<extensions defaultExtensionNs="com.intellij">
<applicationService serviceImplementation="org.jetbrains.plugins.template.SettingsService"/>
</extensions>
<applicationListeners>
<listener class="org.jetbrains.plugins.template.MyIconsPatcher"
topic="com.intellij.ide.AppLifecycleListener"
activeInHeadlessMode="false"/>
</applicationListeners>
<projectListeners>
<listener class="org.jetbrains.plugins.template.MyProjectRootListener"
topic="com.intellij.openapi.roots.ModuleRootListener"
activeInHeadlessMode="false"/>
</projectListeners>
</idea-plugin>
I don’t see what’s wrong, and how to fix it. I’ll replace the SettingsService.getInstance() and see what happens, but I don’t understand what’s wrong with this code.
I have shown you the Aws plugin stack, it is all clear. Your code is called from their static init of class.
Indirectly but only the stack matters not explicit call.
I fully understand the frustration and the pain. Unfortunately the more diagnostic is much better; previously the crash problems related to clinit very simply so silent and never got reported anywhere.
So, the problem comes from another 3rd-party plugin? I do not own the Aws plugin.
I will communicate with the plugin owners.
So, it explains the class init problem, but not the class cast problem.
A stacktrace:
java.lang.ClassCastException: class lermitage.intellij.extraidetweaks.settings.SettingsIDEService cannot be cast to class lermitage.intellij.extraidetweaks.settings.SettingsIDEService (lermitage.intellij.extraidetweaks.settings.SettingsIDEService is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @3cd7f00f; lermitage.intellij.extraidetweaks.settings.SettingsIDEService is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @bba969)
at lermitage.intellij.extraidetweaks.settings.SettingsIDEService.getInstance(SourceFile:224)
at S.a(SourceFile:282)
at S.a(SourceFile:246)
at G.a(SourceFile:14)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:240)
at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:25)
at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:202)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runIntendedWriteActionOnCurrentThread$lambda$7(AnyThreadWriteThreadingSupport.kt:319)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction$lambda$6(AnyThreadWriteThreadingSupport.kt:274)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWithTemporaryThreadLocal(AnyThreadWriteThreadingSupport.kt:204)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:274)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:222)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runIntendedWriteActionOnCurrentThread(AnyThreadWriteThreadingSupport.kt:318)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:928)
at com.intellij.openapi.application.impl.ApplicationImpl$4.run(ApplicationImpl.java:501)
at com.intellij.util.concurrency.ChildContext$runInChildContext$1.invoke(propagation.kt:102)
at com.intellij.util.concurrency.ChildContext$runInChildContext$1.invoke(propagation.kt:102)
at com.intellij.util.concurrency.ChildContext.runInChildContext(propagation.kt:108)
at com.intellij.util.concurrency.ChildContext.runInChildContext(propagation.kt:102)
at com.intellij.util.concurrency.ContextRunnable.run(ContextRunnable.java:27)
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(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:781)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:728)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:750)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:585)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:482)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$12$lambda$11$lambda$10$lambda$9(IdeEventQueue.kt:307)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:864)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$12$lambda$11$lambda$10(IdeEventQueue.kt:306)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$3(IdeEventQueue.kt:958)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:117)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:958)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$12(IdeEventQueue.kt:301)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:341)
at com.intellij.openapi.progress.impl.PlatformTaskSupportKt.pumpEventsForHierarchy(PlatformTaskSupport.kt:648)
at com.intellij.openapi.progress.impl.PlatformTaskSupportKt.access$pumpEventsForHierarchy(PlatformTaskSupport.kt:1)
at com.intellij.openapi.progress.impl.PlatformTaskSupport.runWithModalProgressBlockingInternal$lambda$7(PlatformTaskSupport.kt:393)
at com.intellij.openapi.application.impl.ModalityKt.inModalContext(modality.kt:12)
at com.intellij.openapi.progress.impl.PlatformTaskSupport.runWithModalProgressBlockingInternal(PlatformTaskSupport.kt:366)
at com.intellij.openapi.progress.impl.PlatformTaskSupport.runWithModalProgressBlockingInternal$lambda$5(PlatformTaskSupport.kt:350)
at com.intellij.openapi.progress.ContextKt.prepareThreadContext(context.kt:81)
at com.intellij.openapi.progress.impl.PlatformTaskSupport.runWithModalProgressBlockingInternal(PlatformTaskSupport.kt:346)
at com.intellij.platform.ide.progress.TasksKt.runWithModalProgressBlocking(tasks.kt:201)
at com.intellij.ide.impl.ProjectUtilKt.runUnderModalProgressIfIsEdt(ProjectUtil.kt:738)
at com.intellij.openapi.project.impl.ProjectManagerImpl.openProject(ProjectManagerImpl.kt:536)
at com.intellij.ide.util.projectWizard.AbstractNewProjectStep.doGenerateProject(AbstractNewProjectStep.java:253)
at com.intellij.ide.util.projectWizard.AbstractNewProjectStep.doGenerateProject(AbstractNewProjectStep.java:191)
at com.intellij.ide.util.projectWizard.AbstractNewProjectStep$AbstractCallback.consume(AbstractNewProjectStep.java:182)
at com.intellij.ide.util.projectWizard.ProjectSettingsStepBase$1.actionPerformed(ProjectSettingsStepBase.java:177)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2314)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:407)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6673)
This happens in my icon patcher, but also in my module listener. For the module listener, I don’t see how it would interact with another 3rd-party plugin. Its stacktrace:
java.lang.ClassCastException: class lermitage.intellij.extraidetweaks.settings.SettingsIDEService cannot be cast to class lermitage.intellij.extraidetweaks.settings.SettingsIDEService (lermitage.intellij.extraidetweaks.settings.SettingsIDEService is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @3cd7f00f; lermitage.intellij.extraidetweaks.settings.SettingsIDEService is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @bba969)
at lermitage.intellij.extraidetweaks.settings.SettingsIDEService.getInstance(SettingsIDEService.java:224)
at lermitage.intellij.extraidetweaks.tools.Tools.excludeFolder(Tools.java:282)
at lermitage.intellij.extraidetweaks.tools.Tools.$$$reportNull$$$0(Tools.java:282)
at lermitage.intellij.extraidetweaks.tools.Tools.excludeFolder(Tools.java:246)
at lermitage.intellij.extraidetweaks.tools.Tools.$$$reportNull$$$0(Tools.java:246)
at lermitage.intellij.extraidetweaks.projectstartup.MyProjectRootListener.lambda$rootsChanged$0(MyProjectRootListener.java:14)
at lermitage.intellij.extraidetweaks.projectstartup.MyProjectRootListener.$$$reportNull$$$0(MyProjectRootListener.java:14)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:240)
at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:25)
at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:202)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runIntendedWriteActionOnCurrentThread$lambda$7(AnyThreadWriteThreadingSupport.java:319)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction$lambda$6(AnyThreadWriteThreadingSupport.java:274)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWithTemporaryThreadLocal(AnyThreadWriteThreadingSupport.java:204)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.java:274)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.java:222)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runIntendedWriteActionOnCurrentThread(AnyThreadWriteThreadingSupport.java:318)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:928)
at com.intellij.openapi.application.impl.ApplicationImpl$4.run(ApplicationImpl.java:501)
at com.intellij.util.concurrency.ChildContext$runInChildContext$1.invoke(ChildContext.java:102)
at com.intellij.util.concurrency.ChildContext$runInChildContext$1.invoke(ChildContext.java:102)
at com.intellij.util.concurrency.ChildContext.runInChildContext(ChildContext.java:108)
at com.intellij.util.concurrency.ChildContext.runInChildContext(ChildContext.java:102)
at com.intellij.util.concurrency.ContextRunnable.run(ContextRunnable.java:27)
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(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:781)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:728)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:750)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:585)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:482)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$12$lambda$11$lambda$10$lambda$9(IdeEventQueue.java:307)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:864)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$12$lambda$11$lambda$10(IdeEventQueue.java:306)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$3(IdeEventQueueKt.java:958)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:117)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueueKt.java:958)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$12(IdeEventQueue.java:301)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:341)
at com.intellij.openapi.progress.impl.PlatformTaskSupportKt.pumpEventsForHierarchy(PlatformTaskSupportKt.java:648)
at com.intellij.openapi.progress.impl.PlatformTaskSupportKt.access$pumpEventsForHierarchy(PlatformTaskSupportKt.java:1)
at com.intellij.openapi.progress.impl.PlatformTaskSupport.runWithModalProgressBlockingInternal$lambda$7(PlatformTaskSupport.java:393)
at com.intellij.openapi.application.impl.ModalityKt.inModalContext(ModalityKt.java:12)
at com.intellij.openapi.progress.impl.PlatformTaskSupport.runWithModalProgressBlockingInternal(PlatformTaskSupport.java:366)
at com.intellij.openapi.progress.impl.PlatformTaskSupport.runWithModalProgressBlockingInternal$lambda$5(PlatformTaskSupport.java:350)
at com.intellij.openapi.progress.ContextKt.prepareThreadContext(ContextKt.java:81)
at com.intellij.openapi.progress.impl.PlatformTaskSupport.runWithModalProgressBlockingInternal(PlatformTaskSupport.java:346)
at com.intellij.platform.ide.progress.TasksKt.runWithModalProgressBlocking(TasksKt.java:201)
at com.intellij.ide.impl.ProjectUtilKt.runUnderModalProgressIfIsEdt(ProjectUtilKt.java:738)
at com.intellij.openapi.project.impl.ProjectManagerImpl.openProject(ProjectManagerImpl.java:536)
at com.intellij.ide.util.projectWizard.AbstractNewProjectStep.doGenerateProject(AbstractNewProjectStep.java:253)
at com.intellij.ide.util.projectWizard.AbstractNewProjectStep.doGenerateProject(AbstractNewProjectStep.java:191)
at com.intellij.ide.util.projectWizard.AbstractNewProjectStep$AbstractCallback.consume(AbstractNewProjectStep.java:182)
at com.intellij.ide.util.projectWizard.ProjectSettingsStepBase$1.actionPerformed(ProjectSettingsStepBase.java:177)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2314)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:407)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6673)
I believe the problem is the common pattern of icons use: making them static fields. So not AWS is guilty but the way we designed and used icon classes for many years.
They expect static init is Ok and doesn’t consider potential extensions.
In other words, in this case (Aws), I can do nothing?
For Grep console, I will open an issue on their github, because they can fix it: GrepConsole/src/main/java/krasa/grepconsole/tail/TailRunExecutor.java at master · krasa/GrepConsole · GitHub
if this is a design issue, and if we can do nothing if a plugin is using icons from classes like AllIcons, could you log a warning instead of an error? These errors a frustrating, and I cannot say to customers we can do nothing.
I will try to clarify IDEA-376370: https://youtrack.jetbrains.com/issue/IDEA-376370/AppLifecycleListeners-constructor-cant-get-service
As far as I understand, either you or AWS can handle the issue via a workaround at the moment.
For your plugin solution, you can handle it via the INSTANCE field that will be set when the installation of the patcher happens.
For AWS plugin they can try to avoid asking icons too early.
Could you please create a topic for the second problem of ClassCastException? We will take a look and may be make it more helpful for others as well
Funny thing, I suspect that bashsupport here is involved, it runs code earlier than patcher service instance created. You may try to implement a prefetch of your instance in the same Message Bus subscription for com.intellij.ide.AppLifecycleListener#appFrameCreated
Please use declarative subscription if possible via plugin.xml.
at com.intellij.openapi.extensions.ExtensionPointName.findFirstSafe(ExtensionPointName.kt:66)
at pro.bashsupport.b6.L(b6.java:183)
at pro.bashsupport.b6.d(b6.java:157)
at pro.bashsupport.wg.l(wg.java:44)
at pro.bashsupport.wg.invoke(wg.java:44)
at pro.bashsupport.b6.B(b6.java:69)
at pro.bashsupport.b6.o(b6.java:44)
at pro.bashsupport._62.appFrameCreated(_62.java:9)
at com.intellij.util.messages.impl.MessageBusImplKt.invokeMethod(MessageBusImpl.kt:768)
at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:712)
at com.intellij.util.messages.impl.MessageBusImplKt.deliverMessage(MessageBusImpl.kt:451)
at com.intellij.util.messages.impl.MessageBusImplKt.pumpWaiting(MessageBusImpl.kt:430)
at com.intellij.util.messages.impl.MessageBusImplKt.access$pumpWaiting(MessageBusImpl.kt:1)
at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:493)
at jdk.proxy2/jdk.proxy2.$Proxy55.appFrameCreated(Unknown Source)
@yuriy.artamonov Is this BashSupport stacktrace from an exception or something else? The complete stacktrace would be helpful.
This isn’t loading any icon or similar. As the stacktrace says, it’s accessing extension points, though.
Also, it’s accessing a service (to fetch a Disposable bound to the plugin’s lifecycle).
Perhaps that’s triggering early init of extension implementations?
I haven’t seen this exception before, I’m not sure why it wasn’t reported to BashSupport’s error reporter.