Community
Participate
Working Groups
Created attachment 268396 [details] jps log Eclipse SDK Oxygen M7 is having very slow startup times for me, showing org.eclipse.ltk.ui.refactoring in the splashscreen for the whole delay. See attached jps log file. I have extracted the main thread. I have done a few runs which have similar results. As this first result looked like it may be because PluginsView was open, I re-ran without PluginsView open and will attach that trace next. "main" #1 prio=6 os_prio=0 tid=0x000000000213e800 nid=0x24c0 runnable [0x000000000014a000] java.lang.Thread.State: RUNNABLE at java.io.WinNTFileSystem.getBooleanAttributes(Native Method) at java.io.File.exists(File.java:819) at org.eclipse.pde.core.target.TargetBundle.initialize(TargetBundle.java:151) at org.eclipse.pde.core.target.TargetBundle.<init>(TargetBundle.java:71) at org.eclipse.pde.internal.core.target.IUBundleContainer.generateBundle(IUBundleContainer.java:441) at org.eclipse.pde.internal.core.target.IUBundleContainer.generateResolvedBundles(IUBundleContainer.java:415) at org.eclipse.pde.internal.core.target.IUBundleContainer.cacheBundles(IUBundleContainer.java:307) at org.eclipse.pde.internal.core.target.IUBundleContainer.synchronizerChanged(IUBundleContainer.java:333) at org.eclipse.pde.internal.core.target.P2TargetUtils.notify(P2TargetUtils.java:805) at org.eclipse.pde.internal.core.target.P2TargetUtils.synchronize(P2TargetUtils.java:743) - locked <0x00000000c2dd1c70> (a org.eclipse.pde.internal.core.target.P2TargetUtils) at org.eclipse.pde.internal.core.target.IUBundleContainer.resolveFeatures(IUBundleContainer.java:179) at org.eclipse.pde.internal.core.target.AbstractBundleContainer.resolve(AbstractBundleContainer.java:82) at org.eclipse.pde.internal.core.target.TargetDefinition.resolve(TargetDefinition.java:282) at org.eclipse.pde.internal.core.TargetPlatformHelper.getWorkspaceTargetResolved(TargetPlatformHelper.java:485) at org.eclipse.pde.internal.core.PluginModelManager.getExternalBundles(PluginModelManager.java:615) at org.eclipse.pde.internal.core.PluginModelManager.initializeTable(PluginModelManager.java:539) - locked <0x00000000c2e1ef68> (a org.eclipse.pde.internal.core.PluginModelManager) at org.eclipse.pde.internal.core.PluginModelManager.getState(PluginModelManager.java:1166) at org.eclipse.pde.internal.core.TargetPlatformHelper.getPDEState(TargetPlatformHelper.java:460) at org.eclipse.pde.internal.ui.util.SourcePluginFilter.<init>(SourcePluginFilter.java:28) at org.eclipse.pde.internal.ui.views.plugins.PluginsView.<init>(PluginsView.java:81) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442) at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:184) at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905) at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243) at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55) at org.eclipse.ui.internal.registry.ViewDescriptor.createView(ViewDescriptor.java:59) at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:101) at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPart(CompatibilityPart.java:293) at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:331) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55) at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:990) at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:955) at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:124) at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:399) at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:318) at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162) at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:105) at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:74) at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:56) at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:129) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:997) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:666) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$1.run(PartRenderingEngine.java:551) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:535) at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.createWidget(ElementReferenceRenderer.java:70) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:997) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:666) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:772) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:743) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:737) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:721) at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1289) at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:97) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:684) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:772) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:743) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:737) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:721) at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:69) at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:137) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:680) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:772) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:743) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:737) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:721) at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:69) at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:49) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:680) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:772) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:743) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:737) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:721) at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:79) at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:97) at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:61) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:684) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:772) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:743) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:737) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:721) at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:69) at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:137) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:680) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:772) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:743) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:737) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:721) at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:69) at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:704) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:680) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:772) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:743) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:737) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:721) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1081) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1044) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153) at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680) at org.eclipse.ui.internal.Workbench$$Lambda$65/1924966548.run(Unknown Source) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:151) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590) at org.eclipse.equinox.launcher.Main.run(Main.java:1499)
Created attachment 268397 [details] jps without Plugins View open
Created attachment 268398 [details] opening Plug-ins view after eclipse launches In the jps without Plugins View open I see that it is the PackageExplorerContentProvider that is there. So restarting without either Plug-ins or Package Explorer open does lead to normal start-up times. Then if I open the Plug-ins view the UI freezes for a long time. I have attached the jps output in that case.
With comparison to M6, what is the slowdown percentage ?
(In reply to Vikas Chandra from comment #3) > With comparison to M6, what is the slowdown percentage ? Hi Vikas, I re-read Comment 0, I certainly implied this was a regression, I had only meant to emphasize that I tested with latest and greatest. This AFAICT has been a problem for a while (Neon or earlier) possibly forever. The example provided stack traces cause Eclipse to hang the UI for many minutes. I had been meaning to submit this for a while, but I finally found a reproducible case so I got useful (I think?) stack traces.
Ok thanks. I will investigate
I experienced this issue today on a Windows 10 machine. The progress bar in the splash screen was hanging at "org.eclipse.ltk.ui.refactoring". After starting the task manager it turned out it was the Windows Defender which used up most of the CPU time while the Eclipse process was pretty much idle. Disabling the "Real-time protection" feature of Windows Defender substantially improved the startup time.
New Gerrit change created: https://git.eclipse.org/r/131609
The plugin view is blocked when it was open on startup, while the target platform state was not initialized yet. In this case the filter initialization can be deferred to a background job which triggers the TP initialization and applies the filter lazily. The UI thread is then not blocked anymore. For the case that TP state is initialized already, the filter can be immediately applied.
Gerrit change https://git.eclipse.org/r/131609 was merged to [master]. Commit: http://git.eclipse.org/c/pde/eclipse.pde.ui.git/commit/?id=e0285f56f0f20b47aea8ac8211ff7b3821a92310
Thanks Karsten
(In reply to Julian Honnen from comment #10) > Thanks Karsten IIRC we prefer to use descriptive names for jobs. Job.createSystem("", monitor -> { //$NON-NLS-1$ would make it harder to identify what is running if I also displaying system jobs in the Progress Monitor. Can we add a name to the job?
New Gerrit change created: https://git.eclipse.org/r/136834
Gerrit change https://git.eclipse.org/r/136834 was merged to [master]. Commit: http://git.eclipse.org/c/pde/eclipse.pde.ui.git/commit/?id=df1cfc32374a0f754e238290a64feac28186adef
Can bug reporter or bug assignee please verify this defect for 4.11M3?
(In reply to Vikas Chandra from comment #14) > Can bug reporter or bug assignee please verify this defect for 4.11M3? I am testing this now.
(In reply to Jonah Graham from comment #15) > (In reply to Vikas Chandra from comment #14) > > Can bug reporter or bug assignee please verify this defect for 4.11M3? > > I am testing this now. Tested with eclipse-SDK-I20190214-1800 This is a step in the right direction. Eclipse startup no longer hangs with this change on the splash screen. However, if the Plug-ins view is open when I start (or I open immediately after I start) the UI will still lock up for a long time depending on what I do. For example, typing in a Java editor causes a long (>20 second) lockup. I don't have any lockup if I don't open the Plug-ins view. Therefore, this is good progress, but I don't think the underlying problem is resolved. I will try to capture useful stack traces and attach here.
Created attachment 277590 [details] jstack output while typing The attached log was reproduced with my largish workspace (all of Eclipse CDT using CDT's target platform) and the eclipse-SDK-I20190214-1800 with no additional plug-ins installed.
Mass change, please reset target if you still planning to fix this for 4.11.
Karsten, are you planning to work on this?
(In reply to Lars Vogel from comment #19) > Karsten, are you planning to work on this? Can't do this ATM, time is rare :(
(In reply to Karsten Thoms from comment #20) > (In reply to Lars Vogel from comment #19) > > Karsten, are you planning to work on this? > > Can't do this ATM, time is rare :( Maybe for 4.15?
The underlying performance issue looks like bug 205705.
*** This bug has been marked as a duplicate of bug 205705 ***
Thanks Julian