eclipse-jdt / eclipse-jdt/eclipse.jdt.core

UI freeze with hotspot in JavaModelManager.determineIfOnClasspath()

Open
#3,470 1 comment 0 reactions 0 assignees View on GitHub
performance
Dominant language
Java
Stars
237
Forks
195
Avg merge
1d 10h
Merged PRs (30d)
49

Description

I just had a ~ 2min UI freeze after changing branches while Package Explorer was open
![image](https://github.com/user-attachments/assets/9c1ebacb-29a4-432b-9647-0acbf435942f)

eclipse.buildId=4.35.0.I20241216-1800

Example stack trace:

```
"main" #1 [29680] prio=6 os_prio=0 cpu=537109.38ms elapsed=9777.28s tid=0x0000023f2ceb4fa0 nid=29680 runnable [0x000000cc5592c000]
java.lang.Thread.State: RUNNABLE
at org.eclipse.core.internal.resources.ProjectPreferences.internalGet(ProjectPreferences.java:525)
at org.eclipse.core.internal.preferences.EclipsePreferences.get(EclipsePreferences.java:447)
at org.eclipse.jdt.internal.core.JavaModelManager.getOption(JavaModelManager.java:2349)
at org.eclipse.jdt.internal.core.JavaProject.getOption(JavaProject.java:2061)
at org.eclipse.jdt.internal.core.JavaModelManager.determineIfOnClasspath(JavaModelManager.java:1121)
at org.eclipse.jdt.internal.core.JavaModelManager.create(JavaModelManager.java:1011)
at org.eclipse.jdt.core.JavaCore.create(JavaCore.java:3799)
at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.getHierarchicalPackagesInFolder(PackageExplorerContentProvider.java:490)
at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.getFolderContent(PackageExplorerContentProvider.java:284)
at org.eclipse.jdt.ui.StandardJavaElementContentProvider.getChildren(StandardJavaElementContentProvider.java:193)
at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.getChildren(PackageExplorerContentProvider.java:309)
at org.eclipse.jdt.internal.ui.navigator.JavaNavigatorContentProvider.getChildren(JavaNavigatorContentProvider.java:177)
at org.eclipse.jdt.ui.StandardJavaElementContentProvider.hasChildren(StandardJavaElementContentProvider.java:240)
at org.eclipse.jdt.internal.ui.navigator.JavaNavigatorContentProvider.hasChildren(JavaNavigatorContentProvider.java:165)
at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.hasChildren(SafeDelegateTreeContentProvider.java:110)
at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.callNormalHasChildren(NavigatorContentServiceContentProvider.java:444)
at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.pipelineHasChildren(NavigatorContentServiceContentProvider.java:463)
at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider$3.run(NavigatorContentServiceContentProvider.java:413)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.hasChildren(NavigatorContentServiceContentProvider.java:392)
at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.hasChildren(NavigatorContentServiceContentProvider.java:436)
at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2262)
at org.eclipse.jface.viewers.TreeViewer.isExpandable(TreeViewer.java:553)
at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2299)
at org.eclipse.jface.viewers.AbstractTreeViewer.optionallyPruneChildren(AbstractTreeViewer.java:3064)
at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:2859)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:2031)
at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:684)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:2037)
at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:684)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:2037)
at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:684)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:2037)
at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:684)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:2004)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1961)
at org.eclipse.ui.navigator.CommonViewer.internalRefresh(CommonViewer.java:529)
at org.eclipse.jface.viewers.StructuredViewer.lambda$3(StructuredViewer.java:1486)
at org.eclipse.jface.viewers.StructuredViewer$$Lambda/0x0000023f516bbde0.run(Unknown Source)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1392)
at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:367)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1353)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1486)
at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:533)
at org.eclipse.ui.navigator.CommonViewer.refresh(CommonViewer.java:352)
at org.eclipse.ui.navigator.CommonViewer.refresh(CommonViewer.java:492)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1417)
at org.eclipse.ui.internal.navigator.resources.actions.WorkingSetActionProvider$WorkingSetManagerListener.propertyChange(WorkingSetActionProvider.java:116)
at org.eclipse.ui.internal.AbstractWorkingSetManager$5.run(AbstractWorkingSetManager.java:378)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.ui.internal.AbstractWorkingSetManager.lambda$1(AbstractWorkingSetManager.java:386)
at org.eclipse.ui.internal.AbstractWorkingSetManager$$Lambda/0x0000023f51783c38.run(Unknown Source)
at org.eclipse.ui.internal.AbstractWorkingSetManager.firePropertyChange(AbstractWorkingSetManager.java:391)
at org.eclipse.ui.internal.AbstractWorkingSetManager.workingSetChanged(AbstractWorkingSetManager.java:410)
at org.eclipse.ui.internal.WorkingSetManager.workingSetChanged(WorkingSetManager.java:157)
at org.eclipse.ui.internal.AbstractWorkingSet.fireWorkingSetChanged(AbstractWorkingSet.java:137)
at org.eclipse.ui.internal.WorkingSet.setElements(WorkingSet.java:240)
at org.eclipse.oomph.workingsets.presentation.WorkingSetManager.apply(WorkingSetManager.java:217)
at org.eclipse.oomph.workingsets.presentation.WorkingSetManager$3.run(WorkingSetManager.java:429)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132)
- locked <0x0000000704a2b730> (a org.eclipse.swt.widgets.RunnableLock)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4082)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3698)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:663)
at org.eclipse.ui.internal.Workbench$$Lambda/0x0000023f511f7d30.run(Unknown Source)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:570)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:178)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
at java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.base@21.0.2/DirectMethodHandle$Holder)
at java.lang.invoke.LambdaForm$MH/0x0000023f51007800.invoke(java.base@21.0.2/LambdaForm$MH)
at java.lang.invoke.LambdaForm$MH/0x0000023f51007c00.invokeExact_MT(java.base@21.0.2/LambdaForm$MH)
at jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(java.base@21.0.2/DirectMethodHandleAccessor.java:155)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(java.base@21.0.2/DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke(java.base@21.0.2/Method.java:580)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
```
sampling:

![image](https://github.com/user-attachments/assets/7b1d9244-d868-40da-9531-a2aed8d823bb)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.