eclipse / buildship

The Eclipse Plug-ins for Gradle project.
530 stars 170 forks source link

Eclipse / Buildship still deadlocks during the start even after fix from #1148 #1185

Open ekupcik opened 2 years ago

ekupcik commented 2 years ago

Expected Behavior

Eclipse should start up with no lock-ups.

Current Behavior

While the fix from #1148 has really improved the hanging during the start it can still happen once in a while. For me it was like 2-3 times since the release of 2022-06 / 3.1.16 but according to some colleagues it still happens for them quite often.

Steps to Reproduce

Start eclipse with a gradle based project and hope it happens. For me it was something like every 40-50th time I started eclipse. Compared to something like every 10th time before the fix from #1148

Your Environment

eclipse-jstack.txt eclipse-config.txt eclipse-errorlog.txt

UdoW commented 2 years ago

I got the deadlock today, too.

The error message was:

While loading class "org.eclipse.buildship.core.internal.preferences.PersistentModelConverter$15", thread "Thread[Worker-14: Load persistent model for all projects,5,main]" timed out waiting (30029ms) for thread "Thread[main,6,main]" to finish starting bundle "org.eclipse.buildship.core_3.1.6.v20220511-1359 [67]". To avoid deadlock, thread "Thread[Worker-14: Load persistent model for all projects,5,main]" is proceeding but "org.eclipse.buildship.core.internal.preferences.PersistentModelConverter$15" may not be fully initialized.

My Eclipse installation info is:

eclipse.buildId=4.24.0.I20220607-0700 java.version=17.0.3 java.vendor=Eclipse Adoptium BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE Framework arguments: -product org.eclipse.epp.package.dsl.product Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.dsl.product

Created Time: 2022-08-12 07:36:35.887

eclipse_jstack.txt

zcronix commented 2 years ago

I'm seeing this consistently when starting up Eclipse.

eclipse.buildId=4.24.0.I20220607-0700 java.version=15.0.1 java.vendor=Oracle Corporation BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US Framework arguments: -product org.eclipse.epp.package.java.product Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product

Buildship version is 3.1.6.v20220511-1359

Error message: While loading class "org.eclipse.buildship.core.internal.preferences.PersistentModelConverter", thread "Thread[Worker-2: Load persistent model for all projects,5,main]" timed out waiting (30057ms) for thread "Thread[Worker-6: Processing Java changes since last activation,5,main]" to finish starting bundle "org.eclipse.buildship.core_3.1.6.v20220511-1359 [1259]". To avoid deadlock, thread "Thread[Worker-2: Load persistent model for all projects,5,main]" is proceeding but "org.eclipse.buildship.core.internal.preferences.PersistentModelConverter" may not be fully initialized.

Attaching output of "jstack -l". jstack.txt

felixdo commented 2 years ago

Same error as @zcronix, but during jdtls startup.

CsCherrYY commented 1 year ago

Same error in JDTLS startup. This issue can be easily reproduce when a project setting changed:

  1. Open a sample project via VS Code redhat.java extension verison 1.12.2022102504 (newest pre-release)
  2. change project settings java.compile.nullAnalysis.nonnull and java.compile.nullAnalysis.nullable to empty array. (The default value of them are some null analysis types), this step will
    1. call IJavaProject.setOptions() to update the project compiler options
    2. trigger the full build of workspace via ResourcesPlugin.getWorkspace().build(IncrementalProjectBuilder.FULL_BUILD);
  3. Reload window in VS Code.
  4. Will encounter the deadlock (80%~90% of the case)

typical error stack:

!ENTRY org.eclipse.osgi 2 0 2022-10-25 16:41:10.810
!MESSAGE While loading class "org.eclipse.buildship.core.internal.util.gradle.PublishedGradleVersions$LookupStrategy", thread "Thread[Worker-1: Loading available Gradle versions,5,main]" timed out waiting (30016ms) for thread "Thread[Worker-0: Synchronizing projects,5,main]" to finish starting bundle "org.eclipse.buildship.core_3.1.6.v20220511-1359 [16]". To avoid deadlock, thread "Thread[Worker-1: Loading available Gradle versions,5,main]" is proceeding but "org.eclipse.buildship.core.internal.util.gradle.PublishedGradleVersions$LookupStrategy" may not be fully initialized.
!STACK 0
org.osgi.framework.BundleException: Unable to acquire the state change lock for the module: osgi.identity; type="osgi.bundle"; version:Version="3.1.6.v20220511-1359"; osgi.identity="org.eclipse.buildship.core"; singleton:="true" [id=16] STARTED [STARTED]
    at org.eclipse.osgi.container.Module.lockStateChange(Module.java:350)
    at org.eclipse.osgi.container.Module.start(Module.java:419)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:500)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    at org.eclipse.buildship.core.internal.util.gradle.PublishedGradleVersionsWrapper$LoadVersionsJob.run(PublishedGradleVersionsWrapper.java:60)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.util.concurrent.TimeoutException: Timeout after waiting 30 seconds to acquire the lock.
    at org.eclipse.osgi.container.Module.lockStateChange(Module.java:347)
    ... 12 more
Caused by: org.eclipse.osgi.framework.util.ThreadInfoReport: Thread dump

and

ThreadId: 37 ThreadName: Worker-2: Load persistent model for all projects ThreadState: TIMED_WAITING
  Blocked On: java.util.concurrent.locks.ReentrantLock$NonfairSync@4cd4e723 LockOwnerId: 31 LockOwnerName: Worker-0: Synchronizing projects
  Synchronizers Locked: none
  Monitors Locked: 
    java.lang.Object@627b23b6
    com.google.common.cache.LocalCache$StrongEntry@61d61160
  Stack Trace: 
    java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
    java.base@17.0.4/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
    java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:717)
    java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireNanos(AbstractQueuedSynchronizer.java:986)
    java.base@17.0.4/java.util.concurrent.locks.ReentrantLock$Sync.tryLockNanos(ReentrantLock.java:168)
    java.base@17.0.4/java.util.concurrent.locks.ReentrantLock.tryLock(ReentrantLock.java:479)
    org.eclipse.osgi.container.Module.lockStateChange(Module.java:309)
    org.eclipse.osgi.container.Module.start(Module.java:419)
    org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513)
    org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
    org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570)
    org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
    org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
    org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:500)
    org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
    org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
    java.base@17.0.4/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    org.eclipse.buildship.core.internal.preferences.DefaultModelPersistence.doLoadModel(DefaultModelPersistence.java:130)
    org.eclipse.buildship.core.internal.preferences.DefaultModelPersistence$1.load(DefaultModelPersistence.java:62)
    org.eclipse.buildship.core.internal.preferences.DefaultModelPersistence$1.load(DefaultModelPersistence.java:57)
    com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
    com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
    com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
    com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
    com.google.common.cache.LocalCache.get(LocalCache.java:3951)
    com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974)
    com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4935)
    org.eclipse.buildship.core.internal.preferences.DefaultModelPersistence$2.run(DefaultModelPersistence.java:193)
    org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

jdtls.log

wilkinsona commented 11 months ago

I'm also seeing an occasional deadlock with Buildship involved when I start Eclipse:

Found one Java-level deadlock:
=============================
"main":
  waiting for ownable synchronizer 0x0000000080955cb0, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "org.eclipse.jdt.internal.ui.text.JavaReconciler"

"org.eclipse.jdt.internal.ui.text.JavaReconciler":
  waiting to lock monitor 0x00006000024a0340 (object 0x0000000083300178, a java.lang.Object),
  which is held by "Worker-6: Load persistent model for all projects"

"Worker-6: Load persistent model for all projects":
  waiting for ownable synchronizer 0x0000000080955cb0, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "org.eclipse.jdt.internal.ui.text.JavaReconciler"

Java stack information for the threads listed above:
===================================================
"main":
    at jdk.internal.misc.Unsafe.park(java.base@18-beta/Native Method)
    - parking to wait for  <0x0000000080955cb0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
    at java.util.concurrent.locks.LockSupport.parkNanos(java.base@18-beta/LockSupport.java:252)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@18-beta/AbstractQueuedSynchronizer.java:717)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireNanos(java.base@18-beta/AbstractQueuedSynchronizer.java:986)
    at java.util.concurrent.locks.ReentrantLock$Sync.tryLockNanos(java.base@18-beta/ReentrantLock.java:168)
    at java.util.concurrent.locks.ReentrantLock.tryLock(java.base@18-beta/ReentrantLock.java:479)
    at org.eclipse.osgi.container.Module.lockStateChange(Module.java:309)
    at org.eclipse.osgi.container.Module.start(Module.java:419)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
    at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:496)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
    at java.lang.ClassLoader.loadClass(java.base@18-beta/ClassLoader.java:521)
    at java.lang.Class.getDeclaredConstructors0(java.base@18-beta/Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(java.base@18-beta/Class.java:3405)
    at java.lang.Class.getConstructor0(java.base@18-beta/Class.java:3610)
    at java.lang.Class.getConstructor(java.base@18-beta/Class.java:2303)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.loadBundleActivator(BundleContextImpl.java:801)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:753)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371)
    at org.eclipse.osgi.container.Module.doStart(Module.java:605)
    at org.eclipse.osgi.container.Module.start(Module.java:468)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:500)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
    at java.lang.ClassLoader.loadClass(java.base@18-beta/ClassLoader.java:521)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:622)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:196)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:920)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:246)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:63)
    at org.eclipse.jdt.internal.ui.filters.FilterDescriptor$1.run(FilterDescriptor.java:142)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.jdt.internal.ui.filters.FilterDescriptor.createViewerFilter(FilterDescriptor.java:146)
    at org.eclipse.jdt.ui.actions.CustomFiltersActionGroup$FilterItem.getFilterInstance(CustomFiltersActionGroup.java:190)
    at org.eclipse.jdt.ui.actions.CustomFiltersActionGroup.updateViewerFilters(CustomFiltersActionGroup.java:514)
    at org.eclipse.jdt.ui.actions.CustomFiltersActionGroup.<init>(CustomFiltersActionGroup.java:277)
    at org.eclipse.jdt.ui.actions.CustomFiltersActionGroup.<init>(CustomFiltersActionGroup.java:244)
    at org.eclipse.jdt.internal.ui.packageview.PackageExplorerActionGroup.<init>(PackageExplorerActionGroup.java:145)
    at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.makeActions(PackageExplorerPart.java:796)
    at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.createPartControl(PackageExplorerPart.java:516)
    at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:158)
    at org.eclipse.ui.internal.e4.compatibility.CompatibilityView.createPartControl(CompatibilityView.java:155)
    at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:365)
    at java.lang.invoke.LambdaForm$DMH/0x0000000800e49400.invokeVirtual(java.base@18-beta/LambdaForm$DMH)
    at java.lang.invoke.LambdaForm$MH/0x0000000800cb6400.invoke(java.base@18-beta/LambdaForm$MH)
    at java.lang.invoke.Invokers$Holder.invokeExact_MT(java.base@18-beta/Invokers$Holder)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(java.base@18-beta/DirectMethodHandleAccessor.java:154)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(java.base@18-beta/DirectMethodHandleAccessor.java:104)
    at java.lang.reflect.Method.invoke(java.base@18-beta/Method.java:577)
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
    at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:987)
    at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:952)
    at org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(InjectorImpl.java:141)
    at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:395)
    at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:322)
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:202)
    at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:91)
    at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:60)
    at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:42)
    at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:132)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:995)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:659)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$1.run(PartRenderingEngine.java:544)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:528)
    at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.createWidget(ElementReferenceRenderer.java:73)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:995)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:659)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:763)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:728)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:712)
    at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.lambda$0(PartServiceImpl.java:110)
    at org.eclipse.e4.ui.internal.workbench.PartServiceImpl$$Lambda$331/0x0000000800ff7570.handleEvent(Unknown Source)
    at org.eclipse.e4.ui.services.internal.events.UIEventHandler.lambda$0(UIEventHandler.java:38)
    at org.eclipse.e4.ui.services.internal.events.UIEventHandler$$Lambda$271/0x0000000800ff1870.run(Unknown Source)
    at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183)
    at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:133)
    at org.eclipse.swt.widgets.Display.syncExec(Display.java:5250)
    at org.eclipse.e4.ui.workbench.swt.DisplayUISynchronize.syncExec(DisplayUISynchronize.java:34)
    at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
    at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:205)
    at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:203)
    at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
    at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
    at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:133)
    at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:75)
    at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:44)
    at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:55)
    at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:63)
    at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:424)
    at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElementGen(ElementContainerImpl.java:170)
    at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:188)
    at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.lambda$27(StackRenderer.java:1110)
    at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer$$Lambda$356/0x00000008010da0d8.accept(Unknown Source)
    at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4646)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1547)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1532)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1325)
    at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3253)
    at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1892)
    at org.eclipse.swt.custom.CTabFolder.lambda$0(CTabFolder.java:332)
    at org.eclipse.swt.custom.CTabFolder$$Lambda$347/0x00000008010d6bb0.handleEvent(Unknown Source)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4646)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1547)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1532)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1325)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4413)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3989)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:643)
    at org.eclipse.ui.internal.Workbench$$Lambda$187/0x0000000800e176e8.run(Unknown Source)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:550)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:171)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
    at java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.base@18-beta/DirectMethodHandle$Holder)
    at java.lang.invoke.LambdaForm$MH/0x0000000800c07800.invoke(java.base@18-beta/LambdaForm$MH)
    at java.lang.invoke.LambdaForm$MH/0x0000000800c07c00.invokeExact_MT(java.base@18-beta/LambdaForm$MH)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(java.base@18-beta/DirectMethodHandleAccessor.java:156)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(java.base@18-beta/DirectMethodHandleAccessor.java:104)
    at java.lang.reflect.Method.invoke(java.base@18-beta/Method.java:577)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
"org.eclipse.jdt.internal.ui.text.JavaReconciler":
    at org.eclipse.buildship.core.internal.preferences.DefaultModelPersistence$1.load(DefaultModelPersistence.java:62)
    - waiting to lock <0x0000000083300178> (a java.lang.Object)
    at org.eclipse.buildship.core.internal.preferences.DefaultModelPersistence$1.load(DefaultModelPersistence.java:57)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
    - locked <0x0000000083300270> (a com.google.common.cache.LocalCache$StrongEntry)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3966)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3989)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4950)
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4956)
    at org.eclipse.buildship.core.internal.preferences.DefaultModelPersistence.loadModel(DefaultModelPersistence.java:70)
    at org.eclipse.buildship.core.internal.CorePlugin.scheduleSynchronizationForAbsentModels(CorePlugin.java:223)
    at org.eclipse.buildship.core.internal.CorePlugin.start(CorePlugin.java:120)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:818)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1)
    at java.security.AccessController.executePrivileged(java.base@18-beta/AccessController.java:807)
    at java.security.AccessController.doPrivileged(java.base@18-beta/AccessController.java:569)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:810)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:767)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1032)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:371)
    at org.eclipse.osgi.container.Module.doStart(Module.java:605)
    at org.eclipse.osgi.container.Module.start(Module.java:468)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:500)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
    at java.lang.ClassLoader.loadClass(java.base@18-beta/ClassLoader.java:521)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:622)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:196)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:920)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:246)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:63)
    at org.eclipse.jdt.core.JavaCore.computeClasspathContainerInitializer(JavaCore.java:3868)
    at org.eclipse.jdt.core.JavaCore.getClasspathContainerInitializer(JavaCore.java:3844)
    at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:3127)
    at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:2094)
    at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:3821)
    at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:3271)
    at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:3435)
    at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:2554)
    at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.isTestSource(CompilationUnitProblemFinder.java:218)
    at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:255)
    at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:348)
    at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.makeConsistent(ReconcileWorkingCopyOperation.java:193)
    at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:94)
    at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:740)
    at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:806)
    at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1325)
    at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:132)
    at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy$1.run(JavaReconcilingStrategy.java:94)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:91)
    at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.initialReconcile(JavaReconcilingStrategy.java:189)
    at org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.initialReconcile(CompositeReconcilingStrategy.java:125)
    at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.initialReconcile(JavaCompositeReconcilingStrategy.java:139)
    at org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:100)
    at org.eclipse.jdt.internal.ui.text.JavaReconciler.initialProcess(JavaReconciler.java:421)
    - locked <0x000000008b943210> (a java.lang.Object)
    at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:177)
"Worker-6: Load persistent model for all projects":
    at jdk.internal.misc.Unsafe.park(java.base@18-beta/Native Method)
    - parking to wait for  <0x0000000080955cb0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
    at java.util.concurrent.locks.LockSupport.parkNanos(java.base@18-beta/LockSupport.java:252)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@18-beta/AbstractQueuedSynchronizer.java:717)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireNanos(java.base@18-beta/AbstractQueuedSynchronizer.java:986)
    at java.util.concurrent.locks.ReentrantLock$Sync.tryLockNanos(java.base@18-beta/ReentrantLock.java:168)
    at java.util.concurrent.locks.ReentrantLock.tryLock(java.base@18-beta/ReentrantLock.java:479)
    at org.eclipse.osgi.container.Module.lockStateChange(Module.java:309)
    at org.eclipse.osgi.container.Module.start(Module.java:419)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:513)
    at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:117)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:570)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:335)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:397)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:500)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:416)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:168)
    at java.lang.ClassLoader.loadClass(java.base@18-beta/ClassLoader.java:521)
    at org.eclipse.buildship.core.internal.preferences.PersistentModelConverter.toModel(PersistentModelConverter.java:135)
    at org.eclipse.buildship.core.internal.preferences.DefaultModelPersistence.doLoadModel(DefaultModelPersistence.java:130)
    at org.eclipse.buildship.core.internal.preferences.DefaultModelPersistence.access$100(DefaultModelPersistence.java:51)
    at org.eclipse.buildship.core.internal.preferences.DefaultModelPersistence$1.load(DefaultModelPersistence.java:62)
    - locked <0x0000000083300178> (a java.lang.Object)
    at org.eclipse.buildship.core.internal.preferences.DefaultModelPersistence$1.load(DefaultModelPersistence.java:57)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
    - locked <0x0000000087b21fb0> (a com.google.common.cache.LocalCache$StrongEntry)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3966)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3989)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4950)
    at org.eclipse.buildship.core.internal.preferences.DefaultModelPersistence$2.run(DefaultModelPersistence.java:193)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

Found 1 deadlock.