Community
Participate
Working Groups
I'm experiencing UI frozing during startup Eclipse 2019-12 m3. Looks like Javascript BreakpointManager is created in UI YourKit reports JavaScriptPreferencesManager.StartJob: Worker-0: <unnamed job: org.eclipse.debug.internal.core.BreakpointManager.getBreakpoints0() BreakpointManager.java:440 org.eclipse.debug.internal.core.BreakpointManager.ensureInitialized() BreakpointManager.java:430 org.eclipse.debug.core.model.Breakpoint.<init>() Breakpoint.java:56 org.eclipse.wst.jsdt.debug.internal.core.breakpoints.JavaScriptBreakpoint.<init>() JavaScriptBreakpoint.java:58 org.eclipse.wst.jsdt.debug.internal.core.breakpoints.JavaScriptExceptionBreakpoint.<init>(Map) JavaScriptExceptionBreakpoint.java:59 org.eclipse.wst.jsdt.debug.internal.core.JavaScriptPreferencesManager.createSuspendOnException() JavaScriptPreferencesManager.java:168 org.eclipse.wst.jsdt.debug.internal.core.JavaScriptPreferencesManager.access$2(JavaScriptPreferencesManager) JavaScriptPreferencesManager.java:166 org.eclipse.wst.jsdt.debug.internal.core.JavaScriptPreferencesManager$StartJob.run(IProgressMonitor) JavaScriptPreferencesManager.java:80 Result from JSStack about about main: "main" #1 prio=6 os_prio=31 cpu=10998.65ms elapsed=51.25s tid=0x00007f9fcc008800 nid=0x307 in Object.wait() [0x00007ffee1cfd000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(java.base@13.0.1/Native Method) - waiting on <no object reference available> at org.eclipse.core.internal.jobs.Semaphore.acquire(Semaphore.java:44) - locked <0x00000000860ba200> (a org.eclipse.core.internal.jobs.Semaphore) at org.eclipse.core.internal.jobs.OrderedLock.doAcquire(OrderedLock.java:173) at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:109) at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:85) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:125) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2241) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2286) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2316) at org.eclipse.debug.core.model.Breakpoint.setAttribute(Breakpoint.java:242) at org.eclipse.wst.jsdt.debug.internal.core.breakpoints.JavaScriptBreakpoint.setMarker(JavaScriptBreakpoint.java:76) at org.eclipse.debug.internal.core.BreakpointManager.createBreakpoint(BreakpointManager.java:568) at org.eclipse.debug.internal.core.BreakpointManager.loadBreakpoints(BreakpointManager.java:279) at org.eclipse.debug.internal.core.BreakpointManager.initializeBreakpoints(BreakpointManager.java:468) at org.eclipse.debug.internal.core.BreakpointManager.getBreakpoints0(BreakpointManager.java:441) - locked <0x00000000860ba468> (a org.eclipse.debug.internal.core.BreakpointManager) at org.eclipse.debug.internal.core.BreakpointManager.hasBreakpoints(BreakpointManager.java:987) at org.eclipse.debug.internal.ui.actions.breakpoints.RemoveAllBreakpointsAction.isEnabled(RemoveAllBreakpointsAction.java:53) at org.eclipse.debug.internal.ui.actions.AbstractRemoveAllActionDelegate.update(AbstractRemoveAllActionDelegate.java:93) at org.eclipse.debug.internal.ui.actions.AbstractRemoveAllActionDelegate.init(AbstractRemoveAllActionDelegate.java:79) at org.eclipse.debug.internal.ui.actions.breakpoints.RemoveAllBreakpointsAction.init(RemoveAllBreakpointsAction.java:145) at org.eclipse.ui.internal.WWinPluginAction.initDelegate(WWinPluginAction.java:175) at org.eclipse.ui.internal.PluginAction.createDelegate(PluginAction.java:128) at org.eclipse.ui.internal.WWinPluginAction.refreshActionList(WWinPluginAction.java:157) at org.eclipse.ui.plugin.AbstractUIPlugin.lambda$0(AbstractUIPlugin.java:542) at org.eclipse.ui.plugin.AbstractUIPlugin$$Lambda$192/0x0000000800f5cc40.run(Unknown Source) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185) - locked <0x000000008c2b0a68> (a org.eclipse.swt.widgets.RunnableLock) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4145) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3812) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:660) at org.eclipse.ui.internal.Workbench$$Lambda$110/0x0000000800d22440.run(Unknown Source) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:559) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:154) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@13.0.1/Native Method) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@13.0.1/NativeMethodAccessorImpl.java:62) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@13.0.1/DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(java.base@13.0.1/Method.java:567) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594) at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
After removing breakpoint that was created on previous session I see another UI lock: now by JSDT JavaModelManager "main" #1 prio=6 os_prio=31 cpu=15675.24ms elapsed=43.45s tid=0x00007fce12020800 nid=0x307 in Object.wait() [0x00007ffee76ec000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(java.base@13.0.1/Native Method) - waiting on <no object reference available> at org.eclipse.core.internal.jobs.Semaphore.acquire(Semaphore.java:44) - locked <0x00000000916d0430> (a org.eclipse.core.internal.jobs.Semaphore) at org.eclipse.core.internal.jobs.OrderedLock.doAcquire(OrderedLock.java:173) at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:109) at org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:85) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:125) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2241) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2286) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2316) at org.eclipse.wst.jsdt.internal.core.JavaModelManager.initializeAllContainers(JavaModelManager.java:2162) at org.eclipse.wst.jsdt.internal.core.JavaModelManager.getJsGlobalScopeContainer(JavaModelManager.java:1536) at org.eclipse.wst.jsdt.core.JavaScriptCore.getJsGlobalScopeContainer(JavaScriptCore.java:1358) at org.eclipse.wst.jsdt.internal.ui.packageview.JsGlobalScopeContainer.<init>(JsGlobalScopeContainer.java:92) at org.eclipse.wst.jsdt.internal.ui.packageview.PackageExplorerContentProvider.getPackageFragmentRoots(PackageExplorerContentProvider.java:691) at org.eclipse.wst.jsdt.ui.StandardJavaScriptElementContentProvider.getChildren(StandardJavaScriptElementContentProvider.java:163) at org.eclipse.wst.jsdt.internal.ui.packageview.PackageExplorerContentProvider.getChildren(PackageExplorerContentProvider.java:398) at org.eclipse.wst.jsdt.internal.ui.navigator.JavaNavigatorContentProvider.getChildren(JavaNavigatorContentProvider.java:157) at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getChildren(SafeDelegateTreeContentProvider.java:98) at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getChildren(SafeDelegateTreeContentProvider.java:241) at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getChildren(SafeDelegateTreeContentProvider.java:96) at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider$1.run(NavigatorContentServiceContentProvider.java:160) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.internalGetChildren(NavigatorContentServiceContentProvider.java:146) at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.getChildren(NavigatorContentServiceContentProvider.java:132) at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1414) at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:350) at org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren(StructuredViewer.java:847) at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:621) at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:813) at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:604) at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:766) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1681) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1678) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1678) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1678) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1678) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1678) at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2547) at org.eclipse.ui.navigator.CommonViewer.setSelectionToWidget(CommonViewer.java:442) at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1697) at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:3018) at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1653) at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1084)
I found two workarounds for now: 1. Disable JavaScript content in Project Explorer 2. Disable "refresh workspace on startup"
Both of those traces are waiting on a lock on the workspace; what was holding the lock in those cases?
„Refresh workspace during startup” it’s enabled by default, and my workspace is really big. JDT and PDT haven’t such problems on same workspace.