Community
Participate
Working Groups
Build Identifier: 3.7.1 I've checked out swt projects required to patch/build SWT on GTK 64 bit. To debug SWT with 64 bit, one have to modify lot of files (~800) as described on SWT FAQ. Now to the point: the sync view was opened initially in the "workspace" mode, where files were shown in a tree like structure. This worked so far, until I've made one commit including one single file, and switched to the "Changesets" mode. The commit caused Eclipse to load 2 from 4 CPU's (bug 358898). After closing sync viea and a restart (required to avoid heavy load described in bug 358898), I've just opened sync view again. This made my UI frozen forever (> 10 minutes), with now 3 from 4 CPU cores loaded. The stack trace is below. Reproducible: Always Steps to Reproduce: "main" prio=10 tid=0x0000000000b08800 nid=0x318e runnable [0x00007f4c7479a000] java.lang.Thread.State: RUNNABLE at org.eclipse.core.internal.watson.ElementTree.includes(ElementTree.java:527) - locked <0x000000078a5820d8> (a org.eclipse.core.internal.watson.ElementTree) at org.eclipse.core.internal.resources.Workspace.getResourceInfo(Workspace.java:1768) at org.eclipse.core.internal.localstore.FileSystemResourceManager.getStoreRoot(FileSystemResourceManager.java:528) at org.eclipse.core.internal.localstore.FileSystemResourceManager.locationFor(FileSystemResourceManager.java:754) at org.eclipse.core.internal.resources.Resource.getLocation(Resource.java:1116) at org.eclipse.core.internal.localstore.FileSystemResourceManager.resourceForLocation(FileSystemResourceManager.java:285) at org.eclipse.core.internal.localstore.FileSystemResourceManager.fileForLocation(FileSystemResourceManager.java:472) at org.eclipse.core.internal.resources.WorkspaceRoot.getFileForLocation(WorkspaceRoot.java:137) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForFile(GitContainerMapping.java:69) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:62) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.getTraversals(GitContainerMapping.java:47) at org.eclipse.team.internal.ui.Utils.getResources(Utils.java:644) at org.eclipse.team.internal.ui.Utils.getResources(Utils.java:630) at org.eclipse.team.internal.ui.Utils.getContributedResources(Utils.java:669) at org.eclipse.team.internal.ui.synchronize.SynchronizeView$2.getContributedResourceOrResourceVariant(SynchronizeView.java:798) at org.eclipse.team.internal.ui.synchronize.SynchronizeView$2.equals(SynchronizeView.java:818) at org.eclipse.jface.viewers.CustomHashtable.keyEquals(CustomHashtable.java:277) at org.eclipse.jface.viewers.CustomHashtable.get(CustomHashtable.java:239) at org.eclipse.jface.viewers.StructuredViewer.findItems(StructuredViewer.java:816) at org.eclipse.jface.viewers.StructuredViewer.findItem(StructuredViewer.java:780) at org.eclipse.jface.viewers.AbstractTreeViewer.internalGetWidgetToSelect(AbstractTreeViewer.java:1732) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1620) at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2507) at org.eclipse.ui.navigator.CommonViewer.setSelectionToWidget(CommonViewer.java:446) at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1767) at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2947) at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1723) at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1139) at org.eclipse.ui.navigator.CommonViewer.setSelection(CommonViewer.java:377) at org.eclipse.team.internal.ui.synchronize.SynchronizeView.showInput(SynchronizeView.java:896) at org.eclipse.team.internal.ui.synchronize.SynchronizeView.editorActivated(SynchronizeView.java:881) at org.eclipse.team.internal.ui.synchronize.SynchronizeView.setLinkingEnabled(SynchronizeView.java:838) at org.eclipse.team.internal.ui.synchronize.SynchronizeView.createOpenAndLinkWithEditorHelper(SynchronizeView.java:481) at org.eclipse.team.internal.ui.synchronize.SynchronizeView.display(SynchronizeView.java:451) at org.eclipse.team.internal.ui.synchronize.RefreshUserNotificationPolicy$1.run(RefreshUserNotificationPolicy.java:49) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) - locked <0x000000078afcf6a0> (a org.eclipse.swt.widgets.RunnableLock) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3563) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3212) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410) at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
P.S. egit version is from latest available nightly build org.eclipse.egit.core_1.2.0.201111041821.jar org.eclipse.egit.ui_1.2.0.201111041821.jar org.eclipse.egit_1.2.0.201111041821.jar
P.P.S: Any work with the sync view is impossible - it will end up in the same stack trace with the CPU loaded for minutes on each single click (until one switches the view back to the "Workspace" model). So even activating the already opened sync view causes Eclipse hangs for a minute: "main" prio=10 tid=0x0000000000b08800 nid=0x318e runnable [0x00007f4c74799000] java.lang.Thread.State: RUNNABLE at org.eclipse.core.internal.localstore.FileSystemResourceManager.resourceForLocation(FileSystemResourceManager.java:286) at org.eclipse.core.internal.localstore.FileSystemResourceManager.fileForLocation(FileSystemResourceManager.java:472) at org.eclipse.core.internal.resources.WorkspaceRoot.getFileForLocation(WorkspaceRoot.java:137) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForFile(GitContainerMapping.java:69) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:62) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.createTraversalForContainer(GitContainerMapping.java:60) at org.eclipse.egit.ui.internal.synchronize.mapping.GitContainerMapping.getTraversals(GitContainerMapping.java:47) at org.eclipse.ui.internal.views.markers.MarkerResourceUtil.addResources(MarkerResourceUtil.java:332) at org.eclipse.ui.internal.views.markers.MarkerContentGenerator.internalUpdateSelectedElements(MarkerContentGenerator.java:879) at org.eclipse.ui.internal.views.markers.MarkerContentGenerator.updateSelectedResource(MarkerContentGenerator.java:895) at org.eclipse.ui.internal.views.markers.ExtendedMarkersView$ViewerPageSelectionListener.selectionChanged(ExtendedMarkersView.java:1771) at org.eclipse.ui.internal.AbstractSelectionService.firePostSelection(AbstractSelectionService.java:179) at org.eclipse.ui.internal.AbstractSelectionService.setActivePart(AbstractSelectionService.java:289) at org.eclipse.ui.internal.WorkbenchPagePartList.fireActivePartChanged(WorkbenchPagePartList.java:60) at org.eclipse.ui.internal.PartList.setActivePart(PartList.java:136)
Since version 1.2 I've made huge improvements in synchornize view performance and memory usage, could you please check how latest nightly build behaves in this use case ?
(In reply to comment #3) > Since version 1.2 I've made huge improvements in synchornize view performance > and memory usage, could you please check how latest nightly build behaves in > this use case ? Hi Dariusz, I've given up on EGit because of the terrible performance on large projects, so now I do not have my old workspace anymore and will definitely not be able to reproduce it. To reproduce, you can clone SWT project as described in SWT FAQ, change each second file and try to use sync view.