Intellij 2024.2 hangs on close IDE

hi,
We have a plugin that loads data into a JTree displayed in a tool window. This feature works fine in IntelliJ 2023.1.2.

However, after migrating to IntelliJ 2024.2.1(242.21829.142), the tool window loads correctly. But when we attempt to close the IDE, it hangs indefinitely and sometimes closes after a freeze.

Code snippet for tree initialisation below

     JPanel childPanel1 = new JPanel();
     Tree tree1 = new Tree();
     tree1.add(new Node())
     JPanel childPanel2 = new JPanel();
     Tree tree2 = new Tree();
     tree2.add(new Node())
     childPanel1.add(tree1)
     childPanel2.add(tree2)

Update Tree when there is change in data

        childPanel1.removeAll();
        childPanel1.add(tree1);
        tree1.getTreeModel().reload(rootNode);

Freeze logs has the below entry which used to not come in older version.

     java.lang.Thread.State: RUNNABLE
 (in native)
	at java.desktop/sun.lwawt.macosx.CPlatformComponent.nativeCreateComponent(Native Method)
	at java.desktop/sun.lwawt.macosx.CPlatformComponent.initialize(CPlatformComponent.java:61)
	at java.desktop/sun.lwawt.LWComponentPeer.initialize(LWComponentPeer.java:323)
	at java.desktop/sun.lwawt.LWToolkit.createDelegatedPeer(LWToolkit.java:211)
	at java.desktop/sun.lwawt.LWToolkit.createFrame(LWToolkit.java:238)
	at java.desktop/java.awt.Frame.addNotify(Frame.java:485)
	at com.intellij.openapi.wm.impl.welcomeScreen.FlatWelcomeFrame.addNotify(FlatWelcomeFrame.kt:257)
	at java.desktop/java.awt.Window.show(Window.java:1067)
	at java.desktop/java.awt.Component.show(Component.java:1760)
	at java.desktop/java.awt.Component.setVisible(Component.java:1707)
	at java.desktop/java.awt.Window.setVisible(Window.java:1050)
	at com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame$Companion$prepareToShow$1.invoke(WelcomeFrame.kt:169)
	at com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame$Companion$prepareToShow$1.invoke(WelcomeFrame.kt:159)
	at com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame$Companion$showIfNoProjectOpened$1$1.invoke(WelcomeFrame.kt:202)
	at com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame$Companion$showIfNoProjectOpened$1$1.invoke(WelcomeFrame.kt:199)
	at com.intellij.openapi.progress.CoroutinesKt.blockingContextInner(coroutines.kt:339)
	at com.intellij.openapi.progress.CoroutinesKt$blockingContext$2.invokeSuspend(coroutines.kt:232)
	at com.intellij.openapi.progress.CoroutinesKt$blockingContext$2.invoke(coroutines.kt)
	at com.intellij.openapi.progress.CoroutinesKt$blockingContext$2.invoke(coroutines.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:62)
	at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:261)
	at com.intellij.openapi.progress.CoroutinesKt.blockingContext(coroutines.kt:231)
	at com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame$Companion$showIfNoProjectOpened$1.invokeSuspend(WelcomeFrame.kt:199)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
	at com.intellij.openapi.application.impl.DispatchedRunnable.run(DispatchedRunnable.kt:44)
	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:229)
	at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:22)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:211)
	at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWithImplicitRead(AnyThreadWriteThreadingSupport.kt:122)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWithImplicitRead(ApplicationImpl.java:1162)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:78)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:119)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:41)
	at com.intellij.openapi.application.impl.FlushQueue$$Lambda/0x00000008006f3908.run(Unknown Source)
	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@21.0.3/java.security.AccessController.executePrivileged(AccessController.java:778)
	at java.base@21.0.3/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base@21.0.3/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.ide.IdeEventQueue$$Lambda/0x000000080080f538.run(Unknown Source)
	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.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1$$Lambda/0x00000008008028d0.run(Unknown Source)
	at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
	at com.intellij.openapi.application.WriteIntentReadAction$$Lambda/0x0000000800803d80.compute(Unknown Source)
	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.ide.IdeEventQueueKt$$Lambda/0x0000000800802460.run(Unknown Source)
	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$$Lambda/0x00000008007f7d18.run(Unknown Source)
	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)```

For ease of reading and nicer formatting, can you wrap that freeze log in a code block (triple ` on each side; example here)

Updated the log above and more details

Hi,
It’s hard to tell the reason without more details. Your code snippets don’t signal any problems, but maybe they don’t show the full context. It would be great if you could share full sources or create a minimal reproducible project.