]
Martin Malina closed JBIDE-24186.
---------------------------------
Closing. Feel free to reopen.
Eclipse workspace deadlocking during refresh/rebuild
----------------------------------------------------
Key: JBIDE-24186
URL:
https://issues.jboss.org/browse/JBIDE-24186
Project: Tools (JBoss Tools)
Issue Type: Bug
Components: maven, server
Affects Versions: 4.4.3.Final
Reporter: Beirti O'Nunain
Assignee: Rob Stryker
Fix For: 4.5.0.AM1
- Windows 7
- Eclipse Neon.2 (4.6.2)
- Developer Studio 10.3.0
After a workspace SVN update, the rebuild in Eclipse hangs (Eclipse remains responsive
for a short time) with the following jobs in the progress pane:
+ "Refreshing '/my-non-j2ee-webproject/target/m2e-wtp/web-resources'"
+ Updating Maven Project (Waiting)
+ Updating Maven Project (Waiting)
+ Updating Maven Project (Waiting)
+ Updating Maven Project (Waiting)
....
The project referenced above is a simple web project with no J2EE or JBoss components,
nor is it referenced by any servers in the workspace.
Profiling with yourkit detects a deadlock in the following thread:
Worker-33 <--- Frozen for at least 8m 27s
org.eclipse.wst.server.core.internal.Server.getModules() Server.java:2526
org.eclipse.wst.server.core.internal.Server.visit(IModuleVisitor, IProgressMonitor)
Server.java:3035
org.eclipse.wst.server.core.internal.Server$ResourceChangeJob.run(IProgressMonitor)
Server.java:228
org.eclipse.core.internal.jobs.Worker.run() Worker.java:55
I started profiling Yourkit when the build hung. It shows the following as the live call
stack:
Call Tree Time (ms) Level
<All threads> 530944 1
org.eclipse.linuxtools.internal.docker.core.DockerContainerRefreshManager$ContainerRefreshThread.run() 530086 2
org.eclipse.equinox.launcher.Main.run(String[]) 436 2
org.eclipse.core.internal.jobs.Worker.run() 421 2
I've not found a workaround yet. Killing eclipse and cleaning the workspace sometimes
avoids the issue. This issue does not happen in an Eclipse installation where JBoss tools
has not been installed
Eclipse remains responsive until another call to 'Server.getModules' happens.
Below is the deadlock trace from when Eclipse completely hangs:
Frozen threads found (potential deadlock)
It seems that the following threads have not changed their stack for more than 10
seconds.
These threads are possibly (but not necessarily!) in a deadlock or hung.
main <--- Frozen for at least 2m 21s
org.eclipse.wst.server.core.internal.Server.getModules() Server.java:2527
org.jboss.ide.eclipse.as.ui.actions.ChangeTimeStampActionDelegate.getServers(IModule)
ChangeTimeStampActionDelegate.java:150
org.jboss.ide.eclipse.as.ui.actions.ChangeTimeStampActionDelegate.buildActions()
ChangeTimeStampActionDelegate.java:112
org.jboss.ide.eclipse.as.ui.actions.ChangeTimeStampActionDelegate.selectionChanged(IAction,
ISelection) ChangeTimeStampActionDelegate.java:69
org.eclipse.ui.internal.PluginAction.refreshEnablement() PluginAction.java:206
org.eclipse.ui.internal.PluginAction.selectionChanged(ISelection) PluginAction.java:273
org.eclipse.ui.internal.PluginAction.selectionChanged(IWorkbenchPart, ISelection)
PluginAction.java:297
org.eclipse.ui.internal.e4.compatibility.SelectionService.notifyListeners(IWorkbenchPart,
ISelection, ListenerList) SelectionService.java:259
org.eclipse.ui.internal.e4.compatibility.SelectionService.handleSelectionChanged(MPart,
Object, boolean) SelectionService.java:108
org.eclipse.ui.internal.e4.compatibility.SelectionService.access$0(SelectionService,
MPart, Object, boolean) SelectionService.java:92
org.eclipse.ui.internal.e4.compatibility.SelectionService$1.selectionChanged(MPart,
Object) SelectionService.java:67
org.eclipse.e4.ui.internal.workbench.SelectionAggregator$2.run()
SelectionAggregator.java:126
org.eclipse.core.runtime.SafeRunner.run(ISafeRunnable) SafeRunner.java:42
org.eclipse.e4.ui.internal.workbench.SelectionAggregator.notifyListeners(MPart, Object)
SelectionAggregator.java:123
org.eclipse.e4.ui.internal.workbench.SelectionAggregator.access$6(SelectionAggregator,
MPart, Object) SelectionAggregator.java:121
org.eclipse.e4.ui.internal.workbench.SelectionAggregator$7$1.run()
SelectionAggregator.java:231
org.eclipse.e4.core.contexts.RunAndTrack.runExternalCode(Runnable) RunAndTrack.java:56
org.eclipse.e4.ui.internal.workbench.SelectionAggregator$7.changed(IEclipseContext)
SelectionAggregator.java:228
org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(ContextChangeEvent)
TrackableComputationExt.java:114
org.eclipse.e4.core.internal.contexts.EclipseContext.processScheduled(Set)
EclipseContext.java:343
org.eclipse.e4.core.internal.contexts.EclipseContext.set(String, Object)
EclipseContext.java:358
org.eclipse.e4.ui.internal.workbench.SelectionServiceImpl.setSelection(Object)
SelectionServiceImpl.java:31
org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.selectionChanged(SelectionChangedEvent)
CompatibilityPart.java:450
org.eclipse.jface.viewers.Viewer$1.run() Viewer.java:158
org.eclipse.core.runtime.SafeRunner.run(ISafeRunnable) SafeRunner.java:42
org.eclipse.ui.internal.JFaceUtil$1.run(ISafeRunnable) JFaceUtil.java:50
org.eclipse.jface.util.SafeRunnable.run(ISafeRunnable) SafeRunnable.java:173
org.eclipse.jface.viewers.Viewer.fireSelectionChanged(SelectionChangedEvent)
Viewer.java:155
org.eclipse.jface.viewers.StructuredViewer.updateSelection(ISelection)
StructuredViewer.java:2191
org.eclipse.jface.viewers.StructuredViewer.handleSelect(SelectionEvent)
StructuredViewer.java:1229
org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(SelectionEvent)
StructuredViewer.java:1258
org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(SelectionEvent)
OpenStrategy.java:242
org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy, SelectionEvent)
OpenStrategy.java:236
org.eclipse.jface.util.OpenStrategy$1.handleEvent(Event) OpenStrategy.java:405
org.eclipse.swt.widgets.EventTable.sendEvent(Event) EventTable.java:84
org.eclipse.swt.widgets.Display.sendEvent(EventTable, Event) Display.java:4418
org.eclipse.swt.widgets.Widget.sendEvent(Event) Widget.java:1079
org.eclipse.swt.widgets.Display.runDeferredEvents() Display.java:4236
org.eclipse.swt.widgets.Display.readAndDispatch() Display.java:3824
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run()
PartRenderingEngine.java:1121
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm, Runnable)
Realm.java:336
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(MApplicationElement,
IEclipseContext) PartRenderingEngine.java:1022
org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(MApplicationElement)
E4Workbench.java:150
org.eclipse.ui.internal.Workbench$5.run() Workbench.java:693
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm, Runnable)
Realm.java:336
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor)
Workbench.java:610
org.eclipse.ui.PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor)
PlatformUI.java:148
org.eclipse.ui.internal.ide.application.IDEApplication.start(IApplicationContext)
IDEApplication.java:138
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Object) EclipseAppHandle.java:196
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(Object)
EclipseAppLauncher.java:134
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(Object)
EclipseAppLauncher.java:104
org.eclipse.core.runtime.adaptor.EclipseStarter.run(Object) EclipseStarter.java:388
org.eclipse.core.runtime.adaptor.EclipseStarter.run(String[], Runnable)
EclipseStarter.java:243
sun.reflect.NativeMethodAccessorImpl.invoke0(Method, Object, Object[])
NativeMethodAccessorImpl.java (native)
sun.reflect.NativeMethodAccessorImpl.invoke(Object, Object[])
NativeMethodAccessorImpl.java:62
sun.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[])
DelegatingMethodAccessorImpl.java:43
java.lang.reflect.Method.invoke(Object, Object[]) Method.java:498
org.eclipse.equinox.launcher.Main.invokeFramework(String[], URL[]) Main.java:673
org.eclipse.equinox.launcher.Main.basicRun(String[]) Main.java:610
org.eclipse.equinox.launcher.Main.run(String[]) Main.java:1519
Worker-33 <--- Frozen for at least 14m 43s
org.eclipse.wst.server.core.internal.Server.getModules() Server.java:2526
org.eclipse.wst.server.core.internal.Server.visit(IModuleVisitor, IProgressMonitor)
Server.java:3035
org.eclipse.wst.server.core.internal.Server$ResourceChangeJob.run(IProgressMonitor)
Server.java:228
org.eclipse.core.internal.jobs.Worker.run() Worker.java:55