Community
Participate
Working Groups
Build 20031120 As shown in bug 47051, we reenter DeltaProcessingState.initializeRoots() in the same thread too many times while initializing classpath containers. The depth of the stack is o(n2) the number of projects in the workspace. This could easily cause StackOverFlowErrors.
Copy of the stack that Philippe got: at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots (DeltaProcessingState.java:138) at org.eclipse.jdt.internal.core.JavaModelOperation.execute (JavaModelOperation.java:363) at org.eclipse.jdt.internal.core.JavaModelOperation.run (JavaModelOperation.java:705) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1554) at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1573) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3056) at org.eclipse.jdt.core.JavaCore.setClasspathContainer (JavaCore.java:3182) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize (JREContainerInitializer.java:51) at org.eclipse.jdt.core.JavaCore$1.run(JavaCore.java:1148) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.jdt.core.JavaCore.getClasspathContainer (JavaCore.java:1143) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1859) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1789) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath (JavaProject.java:1765) at org.eclipse.jdt.internal.core.JavaProject.buildStructure (JavaProject.java:258) at org.eclipse.jdt.internal.core.Openable.generateInfos (Openable.java:200) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed (JavaElement.java:487) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo (JavaElement.java:279) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo (JavaElement.java:265) at org.eclipse.jdt.internal.core.JavaElement.getChildren (JavaElement.java:220) at org.eclipse.jdt.internal.core.Openable.hasChildren(Openable.java:302) at org.eclipse.jdt.ui.StandardJavaElementContentProvider.hasChildren (StandardJavaElementContentProvider.java:241) at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable (AbstractTreeViewer.java:1152) at org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus (AbstractTreeViewer.java:1596) at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem (AbstractTreeViewer.java:384) at org.eclipse.jface.viewers.AbstractTreeViewer$1.run (AbstractTreeViewer.java:363) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:84) at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren (AbstractTreeViewer.java:349) at org.eclipse.jface.viewers.AbstractTreeViewer$5.run (AbstractTreeViewer.java:808) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection (StructuredViewer.java:810) at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged (AbstractTreeViewer.java:798) at org.eclipse.jface.viewers.ContentViewer.setInput (ContentViewer.java:238) at org.eclipse.jface.viewers.StructuredViewer.setInput (StructuredViewer.java:1004) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.createPartControl (PackageExplorerPart.java:308) at org.eclipse.ui.internal.PartPane$4.run(PartPane.java:161) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.ui.internal.PartPane.createChildControl (PartPane.java:157) at org.eclipse.ui.internal.ViewPane.createChildControl (ViewPane.java:211) at org.eclipse.ui.internal.ViewFactory$2.run(ViewFactory.java:167) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:1127) at org.eclipse.core.runtime.Platform.run(Platform.java:464) at org.eclipse.ui.internal.ViewFactory.busyRestoreView (ViewFactory.java:98) at org.eclipse.ui.internal.ViewFactory$1.run(ViewFactory.java:82) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:84) at org.eclipse.ui.internal.ViewFactory.restoreView(ViewFactory.java:78) at org.eclipse.ui.internal.ViewFactory$ViewReference.getPart (ViewFactory.java:332) at org.eclipse.ui.internal.WorkbenchPage$1.propertyChange (WorkbenchPage.java:123) at org.eclipse.ui.internal.LayoutPart.setVisible(LayoutPart.java:236) at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:368) at org.eclipse.ui.internal.PartTabFolder.setSelection (PartTabFolder.java:847) at org.eclipse.ui.internal.PartTabFolder.setSelection (PartTabFolder.java:833) at org.eclipse.ui.internal.PartTabFolder.createControl (PartTabFolder.java:239) at org.eclipse.ui.internal.PartSashContainer.createControl (PartSashContainer.java:192) at org.eclipse.ui.internal.PerspectivePresentation.activate (PerspectivePresentation.java:130) at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:724) at org.eclipse.ui.internal.WorkbenchPage.setPerspective (WorkbenchPage.java:2471) at org.eclipse.ui.internal.WorkbenchPage.busySetPerspective (WorkbenchPage.java:658) at org.eclipse.ui.internal.WorkbenchPage.access$8 (WorkbenchPage.java:643) at org.eclipse.ui.internal.WorkbenchPage$12.run(WorkbenchPage.java:2589) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:84) at org.eclipse.ui.internal.WorkbenchPage.setPerspective (WorkbenchPage.java:2587) at org.eclipse.ui.internal.ChangeToPerspectiveMenu.run (ChangeToPerspectiveMenu.java:63) at org.eclipse.ui.actions.PerspectiveMenu.run(PerspectiveMenu.java:308) at org.eclipse.ui.actions.PerspectiveMenu$3.widgetSelected (PerspectiveMenu.java:120) at org.eclipse.swt.widgets.TypedListener.handleEvent (TypedListener.java:89) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:847) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2187) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1877) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1405) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1381) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench (Workbench.java:237) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:139) at org.eclipse.ui.internal.ide.IDEApplication.run (IDEApplication.java:47) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:858) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461) 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:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:299) at org.eclipse.core.launcher.Main.run(Main.java:767) at org.eclipse.core.launcher.Main.main(Main.java:601) at intuitive.audit.Main.runProgramWithClass(Native Method) at intuitive.audit.Audit.main(Audit.java:731)
Changed initializeRoots() to not reenter if the same thread is already initializing the roots. Starting the workbench with Resources perspective only, then switching to the Java perspective used to take 17s on my machine. It now takes 6s.
Reopening as fix is not good enough: causes a NPE if opening a Java perspective without the Package Explorer visible. Will not go in M5.
Added fix back and verified that there was no NPE any longer.
Improved fix so that the 'roots' field of DeltaProcessingState are initialized (the NPE can no longer happen).
Verified for 3.0 M6 with build I200312162000.
Jeem is getting stack overflows in I20040304 that look just like this. See bug 53953... possible regression?