xdev-software / intellij-plugin-save-actions

Supports configurable, Eclipse like, save actions, including "organize imports", "reformat code" and "rearrange code"
https://plugins.jetbrains.com/plugin/22113
Apache License 2.0
39 stars 3 forks source link

Exception in IntelliJ 2024.2: AWT events are not allowed inside write action #145

Open vb-chris opened 1 week ago

vb-chris commented 1 week ago

Checklist

Affected version

1.2.3

Steps to reproduce the bug

  1. Open a project in IntelliJ IDEA

The behavior is intermittent: it happens sometimes, sometimes not. I didn't see a pattern yet.

Expected behavior

No Exception.

Actual behavior

An exception is reported by Intellij:

java.lang.Throwable: AWT events are not allowed inside write action: sun.awt.PeerEvent[INVOCATION_DEFAULT,runnable=sun.awt.SunToolkit$1@1114de0f,notifier=null,catchExceptions=false,when=1726753137451] on sun.awt.windows.WToolkit@4e4be3d2
    at com.intellij.openapi.diagnostic.Logger.error(Logger.java:376)
    at com.intellij.openapi.application.impl.ApplicationImpl.lambda$postInit$6(ApplicationImpl.java:1171)
    at com.intellij.ide.IdeEventQueue.runCustomProcessors(IdeEventQueue.kt:411)
    at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$10(IdeEventQueue.kt:372)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:397)
    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.pumpEventsForFilter(EventDispatchThread.java:121)
    at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191)
    at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236)
    at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
    at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234)
    at java.desktop/java.awt.Dialog.show(Dialog.java:1079)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:887)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:469)
    at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1763)
    at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1712)
    at com.intellij.ui.messages.AlertMessagesManager.showMessageDialog(AlertMessagesManager.kt:70)
    at com.intellij.ui.messages.MessagesServiceImpl.showMessageDialog(MessagesServiceImpl.java:54)
    at com.jetbrains.rdserver.ui.BackendMessagesService.showMessageDialog(BackendMessagesService.kt:33)
    at com.intellij.openapi.ui.messages.MessagesService.showMessageDialog$default(MessagesService.kt:36)
    at com.intellij.openapi.ui.OkCancelDialogBuilder.show(MessageDialogBuilder.kt:201)
    at com.intellij.openapi.ui.OkCancelDialogBuilder.ask(MessageDialogBuilder.kt:191)
    at com.intellij.openapi.ui.Messages.showOkCancelDialog(Messages.java:480)
    at com.intellij.vcs.commit.SaveCommittingDocumentsVetoerKt.confirmSave(SaveCommittingDocumentsVetoer.kt:85)
    at com.intellij.vcs.commit.SaveCommittingDocumentsVetoerKt.access$confirmSave(SaveCommittingDocumentsVetoer.kt:1)
    at com.intellij.vcs.commit.SaveCommittingDocumentsVetoer.maySaveDocument(SaveCommittingDocumentsVetoer.kt:60)
    at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.maySaveDocument(FileDocumentManagerImpl.java:385)
    at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.doSaveDocument(FileDocumentManagerImpl.java:370)
    at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.saveDocument(FileDocumentManagerImpl.java:324)
    at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.saveDocument(FileDocumentManagerImpl.java:313)
    at com.intellij.formatting.service.AsyncDocumentFormattingService$FormattingRequestImpl.<init>(AsyncDocumentFormattingService.java:180)
    at com.intellij.formatting.service.AsyncDocumentFormattingService.formatDocument(AsyncDocumentFormattingService.java:75)
    at com.intellij.formatting.service.AbstractDocumentFormattingService.formatRanges(AbstractDocumentFormattingService.java:67)
    at com.intellij.formatting.service.FormattingServiceUtil.formatRanges(FormattingServiceUtil.java:117)
    at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.reformatText(CodeStyleManagerImpl.java:164)
    at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.reformatText(CodeStyleManagerImpl.java:90)
    at com.intellij.codeInsight.actions.ReformatCodeProcessor.doReformat(ReformatCodeProcessor.java:221)
    at com.intellij.codeInsight.actions.ReformatCodeProcessor.lambda$prepareTask$5(ReformatCodeProcessor.java:166)
    at com.intellij.psi.codeStyle.CodeStyleSettingsManager.runWithLocalSettings(CodeStyleSettingsManager.java:113)
    at com.intellij.application.options.CodeStyle.runWithLocalSettings(CodeStyle.java:366)
    at com.intellij.codeInsight.actions.ReformatCodeProcessor.lambda$prepareTask$6(ReformatCodeProcessor.java:158)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
    at com.intellij.codeInsight.actions.AbstractLayoutCodeProcessor$ProcessingTask.lambda$performFileProcessing$7(AbstractLayoutCodeProcessor.java:465)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$1(WriteCommandAction.java:147)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction$lambda$4(AnyThreadWriteThreadingSupport.kt:318)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction(AnyThreadWriteThreadingSupport.kt:328)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction(AnyThreadWriteThreadingSupport.kt:318)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:890)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$2(WriteCommandAction.java:145)
    at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:217)
    at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:188)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.doRunWriteCommandAction(WriteCommandAction.java:154)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.run(WriteCommandAction.java:121)
    at com.intellij.codeInsight.actions.AbstractLayoutCodeProcessor$ProcessingTask.performFileProcessing(AbstractLayoutCodeProcessor.java:465)
    at com.intellij.codeInsight.actions.AbstractLayoutCodeProcessor$ProcessingTask.lambda$iteration$3(AbstractLayoutCodeProcessor.java:425)
    at com.intellij.openapi.project.DumbService.withAlternativeResolveEnabled(DumbService.kt:305)
    at com.intellij.codeInsight.actions.AbstractLayoutCodeProcessor$ProcessingTask.iteration(AbstractLayoutCodeProcessor.java:425)
    at com.intellij.codeInsight.actions.AbstractLayoutCodeProcessor$ProcessingTask.lambda$process$10(AbstractLayoutCodeProcessor.java:525)
    at com.intellij.codeInsight.actions.FileRecursiveIterator.lambda$processAll$4(FileRecursiveIterator.java:69)
    at com.intellij.openapi.roots.impl.FileIndexBase.lambda$toContentIteratorEx$1(FileIndexBase.java:48)
    at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexImpl$processContentFilesRecursively$visitor$1.visitFileEx(WorkspaceFileIndexImpl.kt:157)
    at com.intellij.openapi.vfs.VfsUtilCore.visitChildrenRecursively(VfsUtilCore.java:302)
    at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexImpl.processContentFilesRecursively(WorkspaceFileIndexImpl.kt:166)
    at com.intellij.workspaceModel.core.fileIndex.impl.WorkspaceFileIndexImpl.processContentFilesRecursively(WorkspaceFileIndexImpl.kt:125)
    at com.intellij.openapi.roots.impl.FileIndexBase.iterateContentUnderDirectory(FileIndexBase.java:41)
    at com.intellij.openapi.roots.impl.ProjectFileIndexImpl.iterateContentUnderDirectory(ProjectFileIndexImpl.java:30)
    at com.intellij.openapi.roots.impl.FileIndexBase.iterateContentUnderDirectory(FileIndexBase.java:72)
    at com.intellij.openapi.roots.impl.ProjectFileIndexImpl.iterateContentUnderDirectory(ProjectFileIndexImpl.java:30)
    at com.intellij.codeInsight.actions.FileRecursiveIterator.processAll(FileRecursiveIterator.java:64)
    at com.intellij.codeInsight.actions.AbstractLayoutCodeProcessor$ProcessingTask.process(AbstractLayoutCodeProcessor.java:523)
    at com.intellij.codeInsight.actions.AbstractLayoutCodeProcessor.processFilesUnderProgress(AbstractLayoutCodeProcessor.java:365)
    at com.intellij.codeInsight.actions.AbstractLayoutCodeProcessor.lambda$runProcessFiles$1(AbstractLayoutCodeProcessor.java:316)
    at com.intellij.openapi.progress.impl.CoreProgressManager$1.run(CoreProgressManager.java:299)
    at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:477)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:133)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressSynchronously$9(CoreProgressManager.java:567)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:217)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:202)
    at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:347)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:578)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:104)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:295)
    at com.intellij.codeInsight.actions.AbstractLayoutCodeProcessor.runProcessFiles(AbstractLayoutCodeProcessor.java:314)
    at com.intellij.codeInsight.actions.AbstractLayoutCodeProcessor.run(AbstractLayoutCodeProcessor.java:225)
    at software.xdev.saveactions.processors.SaveWriteCommand.lambda$execute$0(SaveWriteCommand.java:33)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$1(WriteCommandAction.java:147)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction$lambda$4(AnyThreadWriteThreadingSupport.kt:318)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction(AnyThreadWriteThreadingSupport.kt:328)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction(AnyThreadWriteThreadingSupport.kt:318)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:890)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$2(WriteCommandAction.java:145)
    at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:226)
    at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:188)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.doRunWriteCommandAction(WriteCommandAction.java:154)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.run(WriteCommandAction.java:121)
    at software.xdev.saveactions.processors.SaveWriteCommand.execute(SaveWriteCommand.java:33)
    at software.xdev.saveactions.core.component.Engine.lambda$processPsiFiles$6(Engine.java:105)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    at java.base/java.util.stream.ReferencePipeline$15$1.accept(ReferencePipeline.java:541)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
    at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:722)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
    at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
    at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
    at software.xdev.saveactions.core.component.Engine.processPsiFiles(Engine.java:106)
    at software.xdev.saveactions.core.component.Engine.processPsiFilesIfNecessary(Engine.java:81)
    at software.xdev.saveactions.core.service.impl.AbstractSaveActionsService.guardedProcessPsiFiles(AbstractSaveActionsService.java:79)
    at software.xdev.saveactions.core.service.impl.SaveActionsJavaService.guardedProcessPsiFiles(SaveActionsJavaService.java:23)
    at software.xdev.saveactions.core.listener.SaveActionsDocumentManagerListener.beforeDocumentsSaving(SaveActionsDocumentManagerListener.java:67)
    at software.xdev.saveactions.core.listener.SaveActionsDocumentManagerListener.beforeAllDocumentsSaving(SaveActionsDocumentManagerListener.java:50)
    at com.intellij.util.messages.impl.MessageBusImplKt.invokeMethod(MessageBusImpl.kt:719)
    at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:682)
    at com.intellij.util.messages.impl.MessageBusImplKt.executeOrAddToQueue(MessageBusImpl.kt:514)
    at com.intellij.util.messages.impl.ToDirectChildrenMessagePublisher.publish$intellij_platform_core(CompositeMessageBus.kt:310)
    at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:471)
    at jdk.proxy2/jdk.proxy2.$Proxy22.beforeAllDocumentsSaving(Unknown Source)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.multiCast(FileDocumentManagerImpl.java:174)
    at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.lambda$new$0(FileDocumentManagerImpl.java:130)
    at jdk.proxy2/jdk.proxy2.$Proxy22.beforeAllDocumentsSaving(Unknown Source)
    at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.saveDocuments(FileDocumentManagerImpl.java:279)
    at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.saveAllDocuments(FileDocumentManagerImpl.java:267)
    at com.intellij.configurationStore.SaveAndSyncHandlerImpl$listenIdleAndActivate$2.applicationDeactivated(SaveAndSyncHandlerImpl.kt:186)
    at com.intellij.util.messages.impl.MessageBusImplKt.invokeMethod(MessageBusImpl.kt:722)
    at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:682)
    at com.intellij.util.messages.impl.MessageBusImplKt.deliverMessage(MessageBusImpl.kt:445)
    at com.intellij.util.messages.impl.MessageBusImplKt.pumpWaiting(MessageBusImpl.kt:414)
    at com.intellij.util.messages.impl.MessageBusImplKt.access$pumpWaiting(MessageBusImpl.kt:1)
    at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:483)
    at jdk.proxy2/jdk.proxy2.$Proxy50.onFrameDeactivated(Unknown Source)
    at com.intellij.ide.FrameStateManagerAppListener.applicationDeactivated(FrameStateManagerAppListener.java:69)
    at com.intellij.util.messages.impl.MessageBusImplKt.invokeMethod(MessageBusImpl.kt:722)
    at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:682)
    at com.intellij.util.messages.impl.MessageBusImplKt.deliverMessage(MessageBusImpl.kt:445)
    at com.intellij.util.messages.impl.MessageBusImplKt.pumpWaiting(MessageBusImpl.kt:424)
    at com.intellij.util.messages.impl.MessageBusImplKt.access$pumpWaiting(MessageBusImpl.kt:1)
    at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:483)
    at jdk.proxy2/jdk.proxy2.$Proxy49.applicationDeactivated(Unknown Source)
    at com.intellij.ide.ApplicationActivationStateManager.updateState(ApplicationActivationStateManager.kt:47)
    at com.intellij.ide.IdeEventQueueKt.processAppActivationEvent(IdeEventQueue.kt:1075)
    at com.intellij.ide.IdeEventQueueKt.access$processAppActivationEvent(IdeEventQueue.kt:1)
    at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$13(IdeEventQueue.kt:571)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:84)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:571)
    at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:73)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1$1.compute(IdeEventQueue.kt:357)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1$1.compute(IdeEventQueue.kt:356)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:843)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.invoke(IdeEventQueue.kt:356)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.invoke(IdeEventQueue.kt:351)
    at com.intellij.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1.invoke$lambda$0(IdeEventQueue.kt:1035)
    at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:84)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:910)
    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$runnableWithWIL$1.invoke(IdeEventQueue.kt:1035)
    at com.intellij.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1.invoke(IdeEventQueue.kt:1035)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1036)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1036)
    at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$10(IdeEventQueue.kt:351)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:397)
    at java.desktop/java.awt.SentEvent.dispatch(SentEvent.java:75)
    at java.desktop/java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:262)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:289)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:833)
    at com.intellij.ide.IdeKeyboardFocusManager.access$dispatchEvent$s1569605750(IdeKeyboardFocusManager.kt:28)
    at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$dispatch$1.invoke(IdeKeyboardFocusManager.kt:43)
    at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$dispatch$1.invoke(IdeKeyboardFocusManager.kt:43)
    at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:46)
    at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:46)
    at com.intellij.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1.invoke$lambda$0(IdeEventQueue.kt:1035)
    at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:84)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:910)
    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$runnableWithWIL$1.invoke(IdeEventQueue.kt:1035)
    at com.intellij.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1.invoke(IdeEventQueue.kt:1035)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1036)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:114)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1036)
    at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.kt:46)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4909)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2810)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4860)
    at java.desktop/sun.awt.SunToolkit$1.run(SunToolkit.java:517)
    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:696)
    at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$16(IdeEventQueue.kt:590)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWithoutImplicitRead(AnyThreadWriteThreadingSupport.kt:117)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:590)
    at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:73)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1$1.compute(IdeEventQueue.kt:357)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1$1.compute(IdeEventQueue.kt:356)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:843)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.invoke(IdeEventQueue.kt:356)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.invoke(IdeEventQueue.kt:351)
    at com.intellij.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1.invoke$lambda$0(IdeEventQueue.kt:1035)
    at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
    at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:84)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:910)
    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$runnableWithWIL$1.invoke(IdeEventQueue.kt:1035)
    at com.intellij.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1.invoke(IdeEventQueue.kt:1035)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1036)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1036)
    at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$10(IdeEventQueue.kt:351)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:397)
    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)

Additional information

IntelliJ IDEA 2024.2.1 (Ultimate Edition)
Build #IU-242.21829.142, built on August 28, 2024
Runtime version: 21.0.3+13-b509.11 amd64 (JCEF 122.1.9)
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Non-Bundled Plugins:
  software.xdev.saveactions (1.2.3)
vb-chris commented 1 week ago

Probably related: https://github.com/xdev-software/intellij-plugin-save-actions/issues/23

AB-xdev commented 1 week ago

Thank you for the issue.

We haven't seen this problem for a while now and it's nearly impossible to reproduce (as can be seen in #23 ). I personally saw that error maybe once in the last 2 years.

Do you have any other plugins installed or any special files/windows open inside IDEA during startup that may be related to the problem? Or anything else that may help in narrowing down the problem?

vb-chris commented 1 week ago

Thanks for your instant response! I experienced this issue since an upgrade from 2024.1 to 2024.2 a few days ago, have been using previous versions for years without it. I opened ~10 projects today, and the error occured in 2 of them right after opening the IDE. I will keep an eye on it and report anything that may help to spot the cause.

AB-xdev commented 1 week ago

So I had a look and I think the following is happening here:

  1. Due to some reason a keyboard event is fired DefaultKeyboardFocusManager
    • It looks like this is caused by a WINDOW_LOST_FOCUS event in awt:
  2. Causing a file save FileDocumentManagerImpl.saveAllDocuments
  3. This file save invokes the plugin SaveActionsDocumentManagerListener.beforeAllDocumentsSaving
  4. The plugin itself runs a save SaveWriteCommand
  5. This causes a VCS dialog to popup (SaveCommittingDocumentsVetoer)
    • During this process an unknown class com.jetbrains.rdserver.ui.BackendMessagesService is invoked - This class is not present inside the IntelliJ source code and must have originated from a plugin
      • Update: This class is loaded from the "Code with me" / cwm plugin (cwm-host.jar). According to the code showMessageDialog checks if a cwm session is active and if this is the case allows the dialog to be controlled remotely. Otherwise it just performs a normal call to MessagesServiceImpl.

→ The dialog likely can't be displayed as we are still inside a Keyboard event and the crash occurs

AB-xdev commented 1 week ago

The malfunction is likely caused by the fact that ProjectSettingsTracker#submitSettingsFilesRefresh saves all open files during project load.

It looks like this problem was introduced in IntelliJ 2020.1 and fixed in IntelliJ 2024.3 (EAP) with https://github.com/JetBrains/intellij-community/commit/765caa71175d0a67a54836cf840fae829da590d9

When opening a project with 2024.3 the beforeAllDocumentsSaving method is no longer called which effectively fixes this problem.

AB-xdev commented 1 week ago

Another problem seems to be that the IDE incorrectly detects "Save Files During Commit".

Related:

@vb-chris

vb-chris commented 1 week ago

Thanks a lot for your in-depth investigation.

Do you have anything active inside Settings > Tools > Actions on Save?

Yes: image

Do you commit using the IDE or are you using an external app like "GtiHub Desktop"?

I'm using the IDE only.

Is the problem gone if you invalidate the IDE cache (File > Invalidate Caches -> Tick "Clear file system..." and "Clear VCS Log...")?

Sorry, I can't tell. I avoid invalidation of the file system cache because it erases local history. I could Clear VCS Log caches and indexes if that helps analyzing the problem.

The exception seems to be without impact on the IDE, so it's no problem for me to wait for 2024.3 and see if the upstream changes fix the problem as supposed.

AB-xdev commented 1 week ago

Do you have anything active inside Settings > Tools > Actions on Save?

Yes:

That's an image of our Save Action plugin (not the IntelliJ built-in "Actions on Save"). Could you please recheck for "Actions on Save"?

Is the problem gone if you invalidate the IDE cache (File > Invalidate Caches -> Tick "Clear file system..." and "Clear VCS Log...")?

Sorry, I can't tell. I avoid invalidation of the file system cache because it erases local history. I could Clear VCS Log caches and indexes if that helps analyzing the problem.

The exception seems to be without impact on the IDE, so it's no problem for me to wait for 2024.3 and see if the upstream changes fix the problem as supposed.

I suspect that due to some reason IntellJ believes that some files are currently being committed during startup. Maybe the IDE crashed during a commit once or something like this. Clearing VCS cache only should also do the job.

AB-xdev commented 1 week ago

So before I vanish into the weekend: I also deployed a new snapshot of the plugin. This should fix the project load / startup problem. You may check it out, maybe it helps :)

vb-chris commented 5 days ago

Could you please recheck for "Actions on Save"?

Sorry, I mixed that up. All checkboxes in Actions on Save are disabled.

The error didn't occur anymore since I reported this issue. I will clear the VCS cache and keep an eye on it. When the error happens to occur again, I'll try the plugin snapshot you posted and report back.