weisJ / auto-dark-mode

IDEA plugin to automatically apply system theme settings on macOS and Windows.
https://plugins.jetbrains.com/plugin/14076-auto-dark-mode
MIT License
53 stars 15 forks source link

com.intellij.serviceContainer.AlreadyDisposedException: Cannot create light service #68

Closed asmarcz closed 1 year ago

asmarcz commented 1 year ago
com.intellij.serviceContainer.AlreadyDisposedException: Cannot create light service com.intellij.ide.navbar.ide.NavBarService because container is already disposed (container=Project(name=REDACTED, containerState=DISPOSE_COMPLETED, componentStore=REDACTED) (disposed))
    at com.intellij.serviceContainer.ContainerUtilKt.throwAlreadyDisposedError(containerUtil.kt:40)
    at com.intellij.serviceContainer.ComponentManagerImpl.checkThatCreatingOfLightServiceIsAllowed(ComponentManagerImpl.kt:790)
    at com.intellij.serviceContainer.ComponentManagerImpl.getOrCreateLightService(ComponentManagerImpl.kt:762)
    at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:726)
    at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:670)
    at com.intellij.ide.navbar.ide.NavBarService$Companion.getInstance(NavBarService.kt:165)
    at com.intellij.ide.navbar.ide.NavBarService.getInstance(NavBarService.kt)
    at com.intellij.ide.navigationToolbar.MyNavBarWrapperPanel.uiSettingsChanged(NavBarRootPaneExtension.java:149)
    at jdk.internal.reflect.GeneratedMethodAccessor810.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at com.intellij.util.EventDispatcher.dispatchVoidMethod(EventDispatcher.java:120)
    at com.intellij.util.EventDispatcher.lambda$createMulticaster$1(EventDispatcher.java:85)
    at jdk.proxy2/jdk.proxy2.$Proxy28.uiSettingsChanged(Unknown Source)
    at com.intellij.ide.ui.UISettings.fireUISettingsChanged(UISettings.kt:672)
    at com.intellij.ide.ui.laf.LafManagerImpl.setLookAndFeelImpl(LafManagerImpl.kt:539)
    at com.intellij.ide.ui.laf.LafManagerImpl.setCurrentLookAndFeel(LafManagerImpl.kt:516)
    at com.intellij.ide.ui.LafManager.setCurrentLookAndFeel(LafManager.java:40)
    at com.intellij.ide.actions.QuickChangeLookAndFeel.switchLafAndUpdateUI(QuickChangeLookAndFeel.java:102)
    at com.intellij.ide.actions.QuickChangeLookAndFeel.switchLafAndUpdateUI(QuickChangeLookAndFeel.java:93)
    at com.github.weisj.darkmode.AutoDarkMode.updateLaf(AutoDarkMode.kt:99)
    at com.github.weisj.darkmode.AutoDarkMode.access$updateLaf(AutoDarkMode.kt:43)
    at com.github.weisj.darkmode.AutoDarkMode$themeChanged$1.invoke(AutoDarkMode.kt:78)
    at com.github.weisj.darkmode.AutoDarkMode$themeChanged$1.invoke(AutoDarkMode.kt:74)
    at com.github.weisj.darkmode.AutoDarkMode.scheduleRequest$lambda$1(AutoDarkMode.kt:111)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:249)
    at com.intellij.util.Alarm$Request.runSafely(Alarm.java:365)
    at com.intellij.util.Alarm$Request.run(Alarm.java:354)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:272)
    at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
    at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:21)
    at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:456)
    at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:79)
    at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:122)
    at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:41)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:788)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731)
    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:758)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:666)
    at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$7(IdeEventQueue.kt:570)
    at com.intellij.openapi.application.impl.ApplicationImpl.withoutImplicitRead(ApplicationImpl.java:1446)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:570)
    at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:994)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:994)
    at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385)
    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)
weisJ commented 1 year ago

This does not look like that auto-dark-mode is directly causing this issue. It happens in a callback invoked by QuickChangeLookAndFeel.switchLafAndUpdateUI(QuickChangeLookAndFeel.java:93), which is the official API to change the IDEA theme.

Is this something that can be reproduced reliably? Does it only happen with the plugin installed?

asmarcz commented 1 year ago

Hello, I'm sorry but I don't have any other context. I have started seeing exceptions attributed to the plugin after the last update to 2023.1 but they are different each time so I just decide to report something

weisJ commented 1 year ago

This may also be something related to a change with Laf updates in 2023.1. I'll forward this report to the ItelliJ team.

sergeysova commented 1 year ago

On the new version of the IDEA I have the same error

weisJ commented 1 year ago

Seems to be fixed with 2023.2

https://youtrack.jetbrains.com/issue/IDEA-319237/NavBarService-hits-already-disposed-service

In particular this is not related to the plugin.