Bug 553672 - Deadlock in Eclipse 2019-12 M3 startup
Summary: Deadlock in Eclipse 2019-12 M3 startup
Status: NEW
Alias: None
Product: JSDT
Classification: WebTools
Component: Debug (show other bugs)
Version: 3.16   Edit
Hardware: PC Mac OS X
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact: Victor Rubezhny CLA
URL:
Whiteboard:
Keywords: needinfo
Depends on:
Blocks:
 
Reported: 2019-12-02 11:08 EST by Dawid Pakula CLA
Modified: 2019-12-02 15:58 EST (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dawid Pakula CLA 2019-12-02 11:08:47 EST
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)
Comment 1 Dawid Pakula CLA 2019-12-02 11:22:14 EST
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)
Comment 2 Dawid Pakula CLA 2019-12-02 11:33:10 EST
I found two workarounds for now:
1. Disable JavaScript content in Project Explorer
2. Disable "refresh workspace on startup"
Comment 3 Nitin Dahyabhai CLA 2019-12-02 15:46:49 EST
Both of those traces are waiting on a lock on the workspace; what was holding the lock in those cases?
Comment 4 Dawid Pakula CLA 2019-12-02 15:58:35 EST
„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.