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

Bug 338251

Summary: Adding a new plugin dependency runs something expensive in the UI thread
Product: [Eclipse Project] PDE Reporter: Johannes Rieken <johannes_rieken>
Component: UIAssignee: PDE-UI-Inbox <pde-ui-inbox>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: jamesblackburn+eclipse, Olivier_Thomann, pwebster, remy.suen
Version: 3.6   
Target Milestone: ---   
Hardware: PC   
OS: Mac OS X - Carbon (unsup.)   
Whiteboard:

Description Johannes Rieken CLA 2011-02-25 12:33:35 EST
Build Identifier: 3.7M4

Name: main
State: RUNNABLE
Total blocked: 18,584  Total waited: 2,019

Stack trace: 
java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:228)
java.io.File.isFile(File.java:778)
org.eclipse.jdt.internal.launching.macosx.MacOSXVMInstallType.getDefaultSystemLibrarySource(MacOSXVMInstallType.java:256)
org.eclipse.jdt.internal.launching.StandardVMType.getDefaultLibraryLocations(StandardVMType.java:327)
org.eclipse.jdt.launching.JavaRuntime.getLibraryLocations(JavaRuntime.java:1646)
org.eclipse.jdt.internal.launching.JREContainer.computeClasspathEntries(JREContainer.java:293)
org.eclipse.jdt.internal.launching.JREContainer.getClasspathEntries(JREContainer.java:275)
org.eclipse.jdt.internal.launching.JREContainer.getClasspathEntries(JREContainer.java:371)
org.eclipse.jdt.internal.ui.packageview.ClassPathContainer.getChildren(ClassPathContainer.java:130)
org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.getContainerPackageFragmentRoots(PackageExplorerContentProvider.java:365)
org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.getChildren(PackageExplorerContentProvider.java:292)
org.eclipse.jdt.internal.ui.navigator.JavaNavigatorContentProvider.getChildren(JavaNavigatorContentProvider.java:143)
org.eclipse.jdt.ui.StandardJavaElementContentProvider.hasChildren(StandardJavaElementContentProvider.java:241)
org.eclipse.jdt.internal.ui.navigator.JavaNavigatorContentProvider.hasChildren(JavaNavigatorContentProvider.java:132)
org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.hasChildren(SafeDelegateTreeContentProvider.java:110)
org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.callNormalHasChildren(NavigatorContentServiceContentProvider.java:428)
org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.access$4(NavigatorContentServiceContentProvider.java:423)
org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider$3.run(NavigatorContentServiceContentProvider.java:393)
org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.hasChildren(NavigatorContentServiceContentProvider.java:379)
org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.hasChildren(NavigatorContentServiceContentProvider.java:420)
org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2082)
org.eclipse.jface.viewers.TreeViewer.isExpandable(TreeViewer.java:588)
org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2112)
org.eclipse.jface.viewers.AbstractTreeViewer.optionallyPruneChildren(AbstractTreeViewer.java:2744)
org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:2544)
org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1867)
org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:721)
org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1874)
org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:721)
org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1874)
org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:721)
org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1842)
org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1799)
org.eclipse.ui.navigator.CommonViewer.internalRefresh(CommonViewer.java:561)
org.eclipse.jface.viewers.StructuredViewer$8.run(StructuredViewer.java:1514)
org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1422)
org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:403)
org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1383)
org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1512)
org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:548)
org.eclipse.ui.navigator.CommonViewer.refresh(CommonViewer.java:353)
org.eclipse.ui.navigator.CommonViewer.refresh(CommonViewer.java:510)
org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider$3.run(ResourceExtensionContentProvider.java:294)
org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider.runUpdates(ResourceExtensionContentProvider.java:306)
org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider.access$1(ResourceExtensionContentProvider.java:303)
org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider$1.run(ResourceExtensionContentProvider.java:129)
org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
   - locked org.eclipse.swt.widgets.RunnableLock@6989ef
org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3765)
org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3456)
org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
org.eclipse.equinox.launcher.Main.run(Main.java:1410)


Reproducible: Always

Steps to Reproduce:
1. Have a workspace with many plugins
2. Have a plugin and add a new plugin dependency
3. Save
> the UI hangs for around a minute (showing the dead curser / beach ball on macs)
> the stacktrace from the main thread is in the details
Comment 1 Olivier Thomann CLA 2011-02-25 12:35:17 EST
Moving to PDE/UI
Comment 2 Remy Suen CLA 2011-02-25 12:39:18 EST
Probably the same bug as bug 312038.
Comment 3 James Blackburn CLA 2011-02-25 12:57:40 EST
Yep, it's the same.

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