Project: Eclipse_Platform_UI
Bug 314320 [CommonNavigator] Infinite loop in WorkingSetActionProvider.setWorkingSetFilter if misconfigured
Reported: 2010-05-25 14:12:11 | Status: resolved fixed

Build Identifier: Build id: I20100520-1744 This is happening on Eclipse 3.6RC2 when starting up Pydev without any working set specified and the Pydev Package Explorer is visible (but this is reproduceable with any tree based on the Common Navigator Framework). Basically, the setWorkingSetFilter is calling itself and recursing when the workingSet is null and no ResourceWorkingSetFilter is found (I believe it's pretty clear in the code how this happens, but if needed I can give more info, as I'm able to easily reproduce it). The trace at that point is the following: ... never leaves this point WorkingSetActionProvider.setWorkingSetFilter(IWorkingSet) line: 265 WorkingSetActionProvider.setWorkingSetFilter(IWorkingSet) line: 265 WorkingSetActionProvider.setWorkingSetFilter(IWorkingSet) line: 265 WorkingSetActionProvider.setWorkingSetFilter(IWorkingSet) line: 265 WorkingSetActionProvider.setWorkingSetFilter(IWorkingSet) line: 265 WorkingSetActionProvider.setWorkingSetFilter(IWorkingSet) line: 265 WorkingSetActionProvider.setWorkingSet(IWorkingSet) line: 289 WorkingSetActionProvider$3.propertyChange(PropertyChangeEvent) line: 220 ExtensionStateModel.firePropertyChangeEvent(PropertyChangeEvent) line: 135 ExtensionStateModel.setBooleanProperty(String, boolean) line: 90 WorkingSetActionProvider$4.run() line: 320 RunnableLock.run() line: 35 UISynchronizer(Synchronizer).runAsyncMessages(boolean) line: 134 Display.runAsyncMessages(boolean) line: 4041 Display.readAndDispatch() line: 3660 Workbench.runEventLoop(Window$IExceptionHandler, Display) line: 2629 Workbench.runUI() line: 2593 Workbench.access$4(Workbench) line: 2427 Workbench$7.run() line: 670 Realm.runWithDefault(Realm, Runnable) line: 332 Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 663 PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149 IDEApplication.start(IApplicationContext) line: 115 EclipseAppHandle.run(Object) line: 196 EclipseAppLauncher.runApplication(Object) line: 110 EclipseAppLauncher.start(Object) line: 79 EclipseStarter.run(Object) line: 369 EclipseStarter.run(String[], Runnable) line: 179 NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 Method.invoke(Object, Object...) line: 597 Main.invokeFramework(String[], URL[]) line: 619 Main.basicRun(String[]) line: 574 Main.run(String[]) line: 1407 Main.main(String[]) line: 1383 Reproducible: Always Steps to Reproduce: 1. Install Pydev, create some projects and leave the pydev package explorer visible (note that this actually happens with any project that has a tree based on the Common Navigator Framework) 2. Restart Eclipse (note: will never be able to use it again).

Files changed in fix:
bundles/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java