Bug Description
java.lang.IllegalStateException: @NotNull method com/intellij/ui/popup/AbstractPopup.getContent must not return null occurs in Codeium plugin for PyCharm when trying to hide windows during window deactivation.
Environment
- IDE: PyCharm 2025.3
- OS: Linux (Ubuntu-based)
- Codeium Plugin Version: (latest)
Stack Trace
java.lang.IllegalStateException: @NotNull method com/intellij/ui/popup/AbstractPopup.getContent must not return null
at com.intellij.ui.popup.AbstractPopup.$$$reportNull$$$0(AbstractPopup.java)
at com.intellij.ui.popup.AbstractPopup.getContent(AbstractPopup.java:1914)
at com.codeium.intellij.diff.ui.Cascadebar.hideWindows(Cascadebar.kt:128)
at com.codeium.intellij.diff.services.CascadebarService$setupWindowActivationListener$1$listener$1.windowDeactivated(CascadebarService.kt:107)
at java.desktop/java.awt.AWTEventMulticaster.windowDeactivated(AWTEventMulticaster.java:410)
at java.desktop/java.awt.AWTEventMulticaster.windowDeactivated(AWTEventMulticaster.java:409)
at java.desktop/java.awt.Window.processWindowEvent(Window.java:2143)
at java.desktop/javax.swing.JFrame.processWindowEvent(JFrame.java:298)
at java.desktop/java.awt.Window.processEvent(Window.java:2087)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5049)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2823)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4877)
at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1073)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:763)
at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent$lambda$0(IdeKeyboardFocusManager.kt:49)
at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent$lambda$1(IdeKeyboardFocusManager.kt:55)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1065)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:109)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1065)
at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.kt:55)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4926)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2823)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4877)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:783)
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.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:755)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:753)
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:752)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:664)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:517)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0$0$0$0(IdeEventQueue.kt:337)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:901)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0$0$0(IdeEventQueue.kt:336)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1065)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:109)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1065)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0(IdeEventQueue.kt:331)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:371)
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:544)
at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent$lambda$0(IdeKeyboardFocusManager.kt:49)
at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent$lambda$1(IdeKeyboardFocusManager.kt:55)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1065)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:109)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1065)
at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.kt:55)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4926)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2823)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4877)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:783)
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.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:755)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:753)
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:752)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:664)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:517)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0$0$0$0(IdeEventQueue.kt:337)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:901)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0$0$0(IdeEventQueue.kt:336)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1065)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:117)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1065)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0(IdeEventQueue.kt:331)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:371)
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:935)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.lambda$show$13(DialogWrapperPeerImpl.java:506)
at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
at com.intellij.openapi.application.impl.AppImplKt$rethrowCheckedExceptions$2.invoke(appImpl.kt:126)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.doRunWriteIntentReadAction(NestedLocksThreadingSupport.kt:736)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runPreventiveWriteIntentReadAction(NestedLocksThreadingSupport.kt:710)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runWriteIntentReadAction(NestedLocksThreadingSupport.kt:664)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:1185)
at com.intellij.openapi.application.WriteIntentReadAction.compute(WriteIntentReadAction.java:55)
at com.intellij.openapi.application.WriteIntentReadAction.run(WriteIntentReadAction.java:23)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.lambda$show$14(DialogWrapperPeerImpl.java:505)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.lambda$show$5(DialogWrapperPeerImpl.java:450)
at com.intellij.concurrency.ThreadContext.installThreadContext(threadContext.kt:305)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.lambda$show$6(DialogWrapperPeerImpl.java:449)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:501)
at com.intellij.openapi.ui.DialogWrapper.lambda$doShow$16(DialogWrapper.java:1823)
at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
at com.intellij.openapi.application.impl.AppImplKt$rethrowCheckedExceptions$2.invoke(appImpl.kt:126)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.doRunWriteIntentReadAction(NestedLocksThreadingSupport.kt:736)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runPreventiveWriteIntentReadAction(NestedLocksThreadingSupport.kt:710)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runWriteIntentReadAction(NestedLocksThreadingSupport.kt:664)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:1185)
at com.intellij.openapi.application.WriteIntentReadAction.compute(WriteIntentReadAction.java:55)
at com.intellij.openapi.application.WriteIntentReadAction.run(WriteIntentReadAction.java:23)
at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1822)
at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1770)
at com.intellij.refactoring.ui.RefactoringDialog.show(RefactoringDialog.java:102)
at com.intellij.refactoring.rename.PsiElementRenameHandler.rename(PsiElementRenameHandler.java:224)
at com.intellij.refactoring.rename.PsiElementRenameHandler.invoke(PsiElementRenameHandler.java:128)
at com.intellij.refactoring.rename.PsiElementRenameHandler.invoke(PsiElementRenameHandler.java:101)
at com.intellij.refactoring.rename.PsiElementRenameHandler.invoke(PsiElementRenameHandler.java:84)
at com.intellij.refactoring.actions.BaseRefactoringAction.performRefactoringAction(BaseRefactoringAction.java:163)
at com.intellij.refactoring.rename.RenameHandler2Renamer.performRename(RenameHandler2Renamer.java:38)
at com.intellij.refactoring.actions.RenameElementAction.lambda$actionPerformed$2(RenameElementAction.java:91)
at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
at com.intellij.openapi.application.impl.AppImplKt$rethrowCheckedExceptions$2.invoke(appImpl.kt:126)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.doRunWriteIntentReadAction(NestedLocksThreadingSupport.kt:736)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runPreventiveWriteIntentReadAction(NestedLocksThreadingSupport.kt:710)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runWriteIntentReadAction(NestedLocksThreadingSupport.kt:664)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:1185)
at com.intellij.openapi.application.WriteIntentReadAction.compute(WriteIntentReadAction.java:55)
at com.intellij.openapi.application.WriteIntentReadAction.run(WriteIntentReadAction.java:23)
at com.intellij.refactoring.actions.RenameElementAction.actionPerformed(RenameElementAction.java:60)
at com.intellij.openapi.actionSystem.ex.ActionUtil.doPerformActionOrShowPopup(ActionUtil.kt:437)
at com.intellij.openapi.keymap.impl.ActionProcessor.performAction(ActionProcessor.kt:26)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$actionProcessor$1.performAction(IdeKeyEventDispatcher.kt:499)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcherKt.doPerformActionInner$lambda$0$0(IdeKeyEventDispatcher.kt:824)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:109)
at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:98)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcherKt.doPerformActionInner$lambda$0(IdeKeyEventDispatcher.kt:823)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.performWithActionCallbacks$lambda$0(ActionManagerImpl.kt:1164)
at com.intellij.concurrency.ThreadContext.installThreadContext(threadContext.kt:305)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.performWithActionCallbacks(ActionManagerImpl.kt:1162)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcherKt.doPerformActionInner(IdeKeyEventDispatcher.kt:821)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcherKt.access$doPerformActionInner(IdeKeyEventDispatcher.kt:1)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.kt:554)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.kt:512)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processActionOrWaitSecondStroke(IdeKeyEventDispatcher.kt:451)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.kt:444)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.kt:306)
at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.kt:555)
at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$3(IdeEventQueue.kt:509)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.doRunWriteIntentReadAction(NestedLocksThreadingSupport.kt:736)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runPreventiveWriteIntentReadAction(NestedLocksThreadingSupport.kt:710)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:509)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0$0$0$0(IdeEventQueue.kt:337)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:901)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0$0$0(IdeEventQueue.kt:336)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1065)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:117)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1065)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0(IdeEventQueue.kt:331)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:371)
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)
Steps to Reproduce
- Open PyCharm with Codeium plugin enabled
- Trigger rename operation (Shift+F6) on any element
- The error occurs during window deactivation when trying to hide Codeium UI elements
Root Cause Analysis
The issue appears to be in Cascadebar.kt:128 where hideWindows() method calls getContent() on an AbstractPopup that returns null, violating the @NotNull contract.
Expected Behavior
The plugin should handle null content gracefully or ensure content is properly initialized before accessing it.
Actual Behavior
IllegalStateException is thrown, disrupting the IDE operation.
Workaround
- Restart PyCharm IDE
- Disable/re-enable Codeium plugin
- Update to latest plugin version (if available)
Severity
Medium - doesn't crash IDE completely but interrupts workflow
Additional Context
This appears to be a race condition or lifecycle issue where the popup content is disposed/destroyed before the hideWindows() method attempts to access it.
Bug Description
java.lang.IllegalStateException: @NotNull method com/intellij/ui/popup/AbstractPopup.getContent must not return nulloccurs in Codeium plugin for PyCharm when trying to hide windows during window deactivation.Environment
Stack Trace
Steps to Reproduce
Root Cause Analysis
The issue appears to be in
Cascadebar.kt:128wherehideWindows()method callsgetContent()on an AbstractPopup that returns null, violating the @NotNull contract.Expected Behavior
The plugin should handle null content gracefully or ensure content is properly initialized before accessing it.
Actual Behavior
IllegalStateException is thrown, disrupting the IDE operation.
Workaround
Severity
Medium - doesn't crash IDE completely but interrupts workflow
Additional Context
This appears to be a race condition or lifecycle issue where the popup content is disposed/destroyed before the hideWindows() method attempts to access it.