Error in SonarLint for PyCharm

This happens when I have an open project in PyCharm and I try to open a new project in a new PyCharm window. The window fails to open and I get this error.

Environment:

  • Java: JetBrains s.r.o. 11.0.13
  • OS: Mac OS X x86_64
  • IDE: PyCharm 2021.3.1
  • SonarLint: 6.4.1.42145
java.lang.RuntimeException: java.lang.NullPointerException
	at c.ij.oa.application.impl.LaterInvocator.invokeAndWait(LaterInvocator.java:157)
	at c.ij.oa.application.impl.ApplicationImpl.invokeAndWait(ApplicationImpl.java:450)
	at c.ij.oa.application.impl.ApplicationImpl.invokeAndWait(ApplicationImpl.java:455)
	at c.ij.oa.project.impl.ProjectManagerExImplKt.openProject(ProjectManagerExImpl.kt:458)
	at c.ij.oa.project.impl.ProjectManagerExImplKt.access$openProject(ProjectManagerExImpl.kt:1)
	at c.ij.oa.project.impl.ProjectManagerExImpl$doOpenAsync$1.invoke(ProjectManagerExImpl.kt:143)
	at c.ij.oa.project.impl.ProjectManagerExImpl$doOpenAsync$1.invoke(ProjectManagerExImpl.kt:58)
	at c.ij.oa.project.impl.ProjectUiFrameAllocator$run$progressRunner$1.apply(ProjectFrameAllocator.kt:94)
	at c.ij.oa.project.impl.ProjectUiFrameAllocator$run$progressRunner$1.apply(ProjectFrameAllocator.kt:71)
	at c.ij.oa.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:244)
	at c.ij.oa.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:188)
	at c.ij.oa.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:624)
	at c.ij.oa.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:698)
	at c.ij.oa.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:646)
	at c.ij.oa.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:623)

Hello @meir,

Welcome to the community and thanks for raising this.

I don’t see anything mentioning SonarLint here, and it happens sometimes that the JetBrains error reporting mechanism blames the wrong plugin.

Would you have a more complete stack trace ? This one is truncated

HI @Damien_Urruty,

This error only happens when SonarLint is enabled, and is resolved by disabling it and restarting PyCharm.

The IDE error window even points to SonarLint as the source of the error:

Don’t know why the stacktrace was truncated - here is the full one:

java.lang.RuntimeException: java.lang.NullPointerException
	at com.intellij.openapi.application.impl.LaterInvocator.invokeAndWait(LaterInvocator.java:157)
	at com.intellij.openapi.application.impl.ApplicationImpl.invokeAndWait(ApplicationImpl.java:450)
	at com.intellij.openapi.application.impl.ApplicationImpl.invokeAndWait(ApplicationImpl.java:455)
	at com.intellij.openapi.project.impl.ProjectManagerExImplKt.openProject(ProjectManagerExImpl.kt:458)
	at com.intellij.openapi.project.impl.ProjectManagerExImplKt.access$openProject(ProjectManagerExImpl.kt:1)
	at com.intellij.openapi.project.impl.ProjectManagerExImpl$doOpenAsync$1.invoke(ProjectManagerExImpl.kt:143)
	at com.intellij.openapi.project.impl.ProjectManagerExImpl$doOpenAsync$1.invoke(ProjectManagerExImpl.kt:58)
	at com.intellij.openapi.project.impl.ProjectUiFrameAllocator$run$progressRunner$1.apply(ProjectFrameAllocator.kt:94)
	at com.intellij.openapi.project.impl.ProjectUiFrameAllocator$run$progressRunner$1.apply(ProjectFrameAllocator.kt:71)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:244)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:188)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:624)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:698)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:646)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:623)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:175)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:244)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1692)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: java.lang.NullPointerException
	at java.base/java.util.Objects.requireNonNull(Objects.java:221)
	at org.sonarlint.intellij.core.ModuleBindingManager.getEngineIfStarted(ModuleBindingManager.java:141)
	at org.sonarlint.intellij.module.ModuleChangeListenerKt.getEngineIfStarted(ModuleChangeListener.kt:34)
	at org.sonarlint.intellij.module.ModuleChangeListenerKt.access$getEngineIfStarted(ModuleChangeListener.kt:1)
	at org.sonarlint.intellij.module.ModuleChangeListener.moduleAdded(ModuleChangeListener.kt:38)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeMethod(MessageBusImpl.java:645)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:624)
	at com.intellij.util.messages.impl.MessageBusImpl.deliverMessage(MessageBusImpl.java:417)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:390)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:372)
	at com.intellij.util.messages.impl.MessageBusImpl.access$200(MessageBusImpl.java:33)
	at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:179)
	at com.sun.proxy.$Proxy80.moduleAdded(Unknown Source)
	at com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleManagerComponentBridge.fireModuleAdded(ModuleManagerComponentBridge.kt:293)
	at com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleManagerComponentBridge.access$fireModuleAdded(ModuleManagerComponentBridge.kt:45)
	at com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleManagerComponentBridge$fireModuleAddedInWriteAction$1.run(ModuleManagerComponentBridge.kt:287)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:947)
	at com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleManagerComponentBridge.fireModuleAddedInWriteAction(ModuleManagerComponentBridge.kt:284)
	at com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleManagerComponentBridge.fireModulesAdded(ModuleManagerComponentBridge.kt:279)
	at com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleManagerComponentBridge.access$fireModulesAdded(ModuleManagerComponentBridge.kt:45)
	at com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleManagerComponentBridge$1.projectOpened(ModuleManagerComponentBridge.kt:56)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeMethod(MessageBusImpl.java:645)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:624)
	at com.intellij.util.messages.impl.MessageBusImpl.access$300(MessageBusImpl.java:33)
	at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.executeOrAddToQueue(MessageBusImpl.java:208)
	at com.intellij.util.messages.impl.CompositeMessageBus$ToDirectChildrenMessagePublisher.publish(CompositeMessageBus.java:125)
	at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:166)
	at com.sun.proxy.$Proxy78.projectOpened(Unknown Source)
	at com.intellij.openapi.project.impl.ProjectManagerExImplKt$openProject$1.run(ProjectManagerExImpl.kt:470)
	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:214)
	at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:196)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)
	at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeAndWait$7(ApplicationImpl.java:450)
	at com.intellij.openapi.application.impl.LaterInvocator$1.run(LaterInvocator.java:134)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:82)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:131)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:47)
	at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:187)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:891)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:760)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:447)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:818)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:446)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:492)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Just to update that I also tried invalidating all PyCharm caches and restarting but the problem persists

Thanks for the additional details.

Given the error it seems that your setup is in a strange state. Did you try to connect your project to a SonarQube or SonarCloud at some point ? Are you able to open the SonarLint settings ? Could you send us a picture of what you observe in Tools > SonarLint and in Tools > SonarLint > Project Settings.

The error happens because your project is “half-bound”. It is in a state that is normally not reachable.

Yes, my projects are connected to a SonarQube instance. My usual setup in PyCharm is that I have a main project and a secondary project attached to it in the same window. It looks something like this:
image
Could this be related to the problem?

Here are the screenshots for my SonarLint settings:


Update:
It looks like removing the project from “Override bindings of attached project(s)” (in the last screenshot) fixes the issue, but it means that now my attached project (i.e. “pydesign”) has the same bindings as the primary project (i.e. “delta-lake”). This means I can no longer work on both projects in the same PyCharm window, which is detrimental to my workflow.

I am still not able to reproduce this issue, and I still don’t understand how such situation can occur… Is there something in the log view ?

I can see in the stack trace some legacyBridge symbols, are you using the old IPR project type ? I tried on my side but I don’t have the same call hierarchy.

Could you try to recreate the PyCharm project using the IDEA project type (should be the default now), reimport the module and re-configure SonarLint connection ?