Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 166176

Summary: [actions] Open / Close Projects in Package Explorer sometimes not working
Product: [Eclipse Project] PDE Reporter: Benjamin Pasero <bpasero>
Component: UIAssignee: PDE-UI-Inbox <pde-ui-inbox>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: P3    
Version: 3.3   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Benjamin Pasero CLA 2006-11-29 05:51:15 EST
Build ID: Build id: I20061102-1715

Steps To Reproduce:
I manage the RCP Plugins in their own working set. Before exporting my RCP app, I have to close the plugins, since they have been imported to my workspace, and the build is not completing then (known bug to PDE).

So, I select all projects and select "Close Project" from the contextual menu. Sometimes, this operation is not finishing but stuck at 66%. I then have to kill the eclipse-process and restart. 

Also, when re-opening these projects, I sometimes see it not happen. This is a stack I noticed after trying to open the projects again:

java.lang.ClassCastException: org.eclipse.core.internal.resources.File
at org.eclipse.ui.actions.OpenResourceAction.hasOtherClosedProjects(OpenResourceAction.java:119)
at org.eclipse.ui.actions.OpenResourceAction.run(OpenResourceAction.java:189)
at org.eclipse.jdt.ui.actions.OpenProjectAction.run(OpenProjectAction.java:152)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:268)
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:244)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:499)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:539)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:400)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:925)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3463)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3077)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1924)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1888)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:348)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:165)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:341)
at org.eclipse.core.launcher.Main.basicRun(Main.java:285)
at org.eclipse.core.launcher.Main.run(Main.java:987)
at org.eclipse.core.launcher.Main.main(Main.java:962)

Unfortunately this is not reproducable. Sometimes its working on the first try, sometimes not. I dont see anything in the logs when trying to close projects and it gets stuck doing so. 

The RCP plugins are imported via "Binary project with linked content", maybe thats the reason for the problem. 

Ben
Comment 1 Martin Aeschlimann CLA 2006-11-29 06:41:43 EST
got fixed in 3.3 I20061121 with the fix for bug 164779
Comment 2 Benjamin Pasero CLA 2006-12-17 18:28:57 EST
Still seeing this in 3.3 M4
Comment 3 Benjamin Pasero CLA 2006-12-17 18:47:00 EST
This is now reproducible every time for me and given Bug 168365 makes 3.3 more or less useless for me.
Comment 4 Benjamin Pasero CLA 2006-12-17 18:51:51 EST
Thread Dump:

Name: Worker-3
State: TIMED_WAITING on org.eclipse.core.internal.jobs.Semaphore@c4dc7c
Total blocked: 270  Total waited: 181

Stack trace: 
java.lang.Object.wait(Native Method)
org.eclipse.core.internal.jobs.Semaphore.acquire(Semaphore.java:38)
org.eclipse.core.internal.jobs.OrderedLock.doAcquire(OrderedLock.java:169)
org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:105)
org.eclipse.core.internal.jobs.OrderedLock.acquire(OrderedLock.java:82)
org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:97)
org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1690)
org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1738)
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:784)
org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:4128)
org.eclipse.pde.internal.core.SearchablePluginsManager.updateClasspathContainer(SearchablePluginsManager.java:176)
org.eclipse.pde.internal.core.SearchablePluginsManager.updateClasspathContainer(SearchablePluginsManager.java:161)
org.eclipse.pde.internal.core.PluginModelManager.handleModelsChanged(PluginModelManager.java:283)
org.eclipse.pde.internal.core.PluginModelManager.access$0(PluginModelManager.java:213)
org.eclipse.pde.internal.core.PluginModelManager$1.modelsChanged(PluginModelManager.java:63)
org.eclipse.pde.internal.core.WorkspaceModelManager.fireModelProviderEvent(WorkspaceModelManager.java:755)
   - locked org.eclipse.pde.internal.core.WorkspaceModelManager@fee02f
org.eclipse.pde.internal.core.WorkspaceModelManager.processModelChanges(WorkspaceModelManager.java:749)
org.eclipse.pde.internal.core.WorkspaceModelManager.resourceChanged(WorkspaceModelManager.java:466)
org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
org.eclipse.core.internal.events.NotificationManager.handleEvent(NotificationManager.java:248)
org.eclipse.core.internal.resources.Workspace.broadcastEvent(Workspace.java:251)
org.eclipse.core.internal.resources.Project.close(Project.java:138)
org.eclipse.ui.actions.CloseResourceAction.invokeOperation(CloseResourceAction.java:184)
org.eclipse.ui.actions.WorkspaceAction.execute(WorkspaceAction.java:141)
org.eclipse.ui.actions.WorkspaceAction$1.runInWorkspace(WorkspaceAction.java:460)
org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)


Name: Worker-7
State: BLOCKED on org.eclipse.pde.internal.core.WorkspaceModelManager@fee02f owned by: Worker-3
Total blocked: 142  Total waited: 164

Stack trace: 
org.eclipse.pde.internal.core.WorkspaceModelManager.fireModelProviderEvent(WorkspaceModelManager.java:754)
org.eclipse.pde.internal.core.WorkspaceModelManager.processModelChanges(WorkspaceModelManager.java:749)
org.eclipse.pde.internal.core.WorkspaceModelManager.resourceChanged(WorkspaceModelManager.java:461)
org.eclipse.jdt.internal.core.DeltaProcessingState$1.run(DeltaProcessingState.java:364)
org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:359)
org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148)
org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:257)
org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:964)
org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1752)
org.eclipse.core.internal.events.NotificationManager$NotifyJob.run(NotificationManager.java:39)
org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)



Name: Worker-8
State: TIMED_WAITING on org.eclipse.core.internal.jobs.ThreadJob@1aa3e7b
Total blocked: 338  Total waited: 1.121

Stack trace: 
java.lang.Object.wait(Native Method)
org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:182)
org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:87)
org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:219)
org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:96)
org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:1690)
org.eclipse.core.internal.resources.Resource.refreshLocal(Resource.java:1398)
org.eclipse.core.internal.refresh.RefreshJob.runInWorkspace(RefreshJob.java:141)
org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
Comment 5 Benjamin Pasero CLA 2006-12-17 18:59:06 EST
Reproducible also in 3.3 M2.

Works fine with 3.2
Comment 6 Martin Aeschlimann CLA 2006-12-22 03:16:12 EST
Ok, so what is fixed is the ClassCastException from comment 0. The deadlock is still there. It seems it has to do with the workspace lock and a PDE lock.
Moving to PDE.
Comment 7 Brian Bauman CLA 2006-12-27 10:04:42 EST
Looks like the lock problem reported in bug 168028

*** This bug has been marked as a duplicate of bug 168028 ***