Community
Participate
Working Groups
The dispose method of WorkbenchSiteProgressService is the following. Notide that if the waitCursor is null, the listener is not returned. If I close all open instances of the sync view, the waitCursor is null so a reference to the sync view stays around. The removeListener should either be done first or in a finally block. public void dispose() { if (updateJob != null) updateJob.cancel(); if (waitCursor == null) return; waitCursor.dispose(); waitCursor = null; ProgressManager.getInstance().removeListener(this); }
As a result the synchronize view is being leaked all the time. Marking critical since this must be fixed for 3.0. Here is an example of the leak: GC Roots -> Instances of org.eclipse.team.ui.synchronize.ISynchronizeView and subclasses [1 object]: Reverse Paths | +---org.eclipse.team.internal.ui.synchronize.SynchronizeView (#015b011c) | +---part of org.eclipse.ui.internal.ViewSite (#01e03412) | | | +---site of org.eclipse.ui.internal.progress.WorkbenchSiteProgressService (#0127e2ee) | | | +---key of java.util.HashMap$Entry (#00923db4) | | | +---[11] of java.util.HashMap$Entry[16] (#00d02a4e) | | | +---table of java.util.HashMap (#006ed953) | | | +---map of java.util.HashSet (#01feff10) | | | +---value of java.util.HashMap$Entry (#0193047b) | | | +---[2] of java.util.HashMap$Entry[16] (#006ccb80) | | | +---table of java.util.HashMap (#00330ca6) | | | +---m of java.util.Collections$SynchronizedMap (#0020eaf2) | | | +---familyListeners of org.eclipse.ui.internal.progress.ProgressManager (#0020cf5e) | | | +---singleton of org.eclipse.ui.internal.progress.ProgressManager (#00e106fb) | +---this$0 of org.eclipse.ui.part.PageBookView$SelectionProvider (#01b70e1e) | | | +---selectionProvider of org.eclipse.ui.internal.ViewSite (#01e03412) | | | +---site of org.eclipse.ui.internal.progress.WorkbenchSiteProgressService (#0127e2ee) | | | +---key of java.util.HashMap$Entry (#00923db4) | | | +---[11] of java.util.HashMap$Entry[16] (#00d02a4e) | | | +---table of java.util.HashMap (#006ed953) | | | +---map of java.util.HashSet (#01feff10) | | | +---value of java.util.HashMap$Entry (#0193047b) | | | +---[2] of java.util.HashMap$Entry[16] (#006ccb80) | | | +---table of java.util.HashMap (#00330ca6) | | | +---m of java.util.Collections$SynchronizedMap (#0020eaf2) | | | +---familyListeners of org.eclipse.ui.internal.progress.ProgressManager (#0020cf5e) | | | +---singleton of org.eclipse.ui.internal.progress.ProgressManager (#00e106fb) | +---fView of org.eclipse.team.internal.ui.synchronize.actions.SynchronizePageDropDownAction (#00ffed11) | | | +---action of org.eclipse.jface.action.ActionContributionItem (#01b619cf) | | | +---[0] of java.lang.Object[16] (#00bffca1) | | | +---elementData of java.util.ArrayList (#00899db0) | | | +---contributions of org.eclipse.ui.internal.ViewPane$PaneToolBarManager (#00b70bf2) | | | +---isvToolBarMgr of org.eclipse.ui.internal.ViewPane (#004f439d) | | | +---pane of org.eclipse.ui.internal.ViewSite (#01e03412) | | | +---site of org.eclipse.ui.internal.progress.WorkbenchSiteProgressService (#0127e2ee) | | | +---key of java.util.HashMap$Entry (#00923db4) | | | +---[11] of java.util.HashMap$Entry[16] (#00d02a4e) | | | +---table of java.util.HashMap (#006ed953) | | | +---map of java.util.HashSet (#01feff10) | | | +---value of java.util.HashMap$Entry (#0193047b) | | | +---[2] of java.util.HashMap$Entry[16] (#006ccb80) | | | +---table of java.util.HashMap (#00330ca6) | | | +---m of java.util.Collections$SynchronizedMap (#0020eaf2) | | | +---familyListeners of org.eclipse.ui.internal.progress.ProgressManager (#0020cf5e) | | | +---singleton of org.eclipse.ui.internal.progress.ProgressManager (#00e106fb) | +---view of org.eclipse.team.internal.ui.synchronize.actions.RemoveSynchronizeParticipantAction (#00a9c0dd) | | | +---action of org.eclipse.jface.action.ActionContributionItem (#0197cf84) | | | +---[0] of java.lang.Object[10] (#003e97ca) | | | +---elementData of java.util.ArrayList (#00cfb92c) | | | +---contributions of org.eclipse.ui.internal.ViewPane$PaneMenuManager (#01715c02) | | | +---isvMenuMgr of org.eclipse.ui.internal.ViewPane (#004f439d) | | | +---pane of org.eclipse.ui.internal.ViewSite (#01e03412) | | | +---site of org.eclipse.ui.internal.progress.WorkbenchSiteProgressService (#0127e2ee) | | | +---key of java.util.HashMap$Entry (#00923db4) | | | +---[11] of java.util.HashMap$Entry[16] (#00d02a4e) | | | +---table of java.util.HashMap (#006ed953) | | | +---map of java.util.HashSet (#01feff10) | | | +---value of java.util.HashMap$Entry (#0193047b) | | | +---[2] of java.util.HashMap$Entry[16] (#006ccb80) | | | +---table of java.util.HashMap (#00330ca6) | | | +---m of java.util.Collections$SynchronizedMap (#0020eaf2) | | | +---familyListeners of org.eclipse.ui.internal.progress.ProgressManager (#0020cf5e) | | | +---singleton of org.eclipse.ui.internal.progress.ProgressManager (#00e106fb) | +---view of org.eclipse.team.internal.ui.synchronize.actions.RemoveSynchronizeParticipantAction (#00b4fce5) | +---action of org.eclipse.jface.action.ActionContributionItem (#01b8fe99) | +---[1] of java.lang.Object[10] (#003e97ca) | +---elementData of java.util.ArrayList (#00cfb92c) | +---contributions of org.eclipse.ui.internal.ViewPane$PaneMenuManager (#01715c02) | +---isvMenuMgr of org.eclipse.ui.internal.ViewPane (#004f439d) | +---pane of org.eclipse.ui.internal.ViewSite (#01e03412) | +---site of org.eclipse.ui.internal.progress.WorkbenchSiteProgressService (#0127e2ee) | +---key of java.util.HashMap$Entry (#00923db4) | +---[11] of java.util.HashMap$Entry[16] (#00d02a4e) | +---table of java.util.HashMap (#006ed953) | +---map of java.util.HashSet (#01feff10) | +---value of java.util.HashMap$Entry (#0193047b) | +---[2] of java.util.HashMap$Entry[16] (#006ccb80) | +---table of java.util.HashMap (#00330ca6) | +---m of java.util.Collections$SynchronizedMap (#0020eaf2) | +---familyListeners of org.eclipse.ui.internal.progress.ProgressManager (#0020cf5e) | +---singleton of org.eclipse.ui.internal.progress.ProgressManager (#00e106fb) -------------------------------------------------------------------------------- GC Roots -> Instances of org.eclipse.team.ui.synchronize.ISynchronizeView and subclasses [1 object]: Direct Paths | +---org.eclipse.ui.internal.progress.ProgressManager (#00e106fb) | +---singleton org.eclipse.ui.internal.progress.ProgressManager (#0020cf5e) | | | +---familyListeners java.util.Collections$SynchronizedMap (#0020eaf2) | | | +---m java.util.HashMap (#00330ca6) | | | +---table java.util.HashMap$Entry[16] (#006ccb80) | | | +---[2] java.util.HashMap$Entry (#0193047b) | | | +---value java.util.HashSet (#01feff10) | | | +---map java.util.HashMap (#006ed953) | | | +---table java.util.HashMap$Entry[16] (#00d02a4e) | | | +---[11] java.util.HashMap$Entry (#00923db4) | | | +---key org.eclipse.ui.internal.progress.WorkbenchSiteProgressService (#0127e2ee) | | | +---site org.eclipse.ui.internal.ViewSite (#01e03412) | | | +---part org.eclipse.team.internal.ui.synchronize.SynchronizeView (#015b011c) | +---singleton org.eclipse.ui.internal.progress.ProgressManager (#0020cf5e) | | | +---familyListeners java.util.Collections$SynchronizedMap (#0020eaf2) | | | +---m java.util.HashMap (#00330ca6) | | | +---table java.util.HashMap$Entry[16] (#006ccb80) | | | +---[2] java.util.HashMap$Entry (#0193047b) | | | +---value java.util.HashSet (#01feff10) | | | +---map java.util.HashMap (#006ed953) | | | +---table java.util.HashMap$Entry[16] (#00d02a4e) | | | +---[11] java.util.HashMap$Entry (#00923db4) | | | +---key org.eclipse.ui.internal.progress.WorkbenchSiteProgressService (#0127e2ee) | | | +---site org.eclipse.ui.internal.ViewSite (#01e03412) | | | +---selectionProvider org.eclipse.ui.part.PageBookView$SelectionProvider (#01b70e1e) | | | +---this$0 org.eclipse.team.internal.ui.synchronize.SynchronizeView (#015b011c) | +---singleton org.eclipse.ui.internal.progress.ProgressManager (#0020cf5e) | | | +---familyListeners java.util.Collections$SynchronizedMap (#0020eaf2) | | | +---m java.util.HashMap (#00330ca6) | | | +---table java.util.HashMap$Entry[16] (#006ccb80) | | | +---[2] java.util.HashMap$Entry (#0193047b) | | | +---value java.util.HashSet (#01feff10) | | | +---map java.util.HashMap (#006ed953) | | | +---table java.util.HashMap$Entry[16] (#00d02a4e) | | | +---[11] java.util.HashMap$Entry (#00923db4) | | | +---key org.eclipse.ui.internal.progress.WorkbenchSiteProgressService (#0127e2ee) | | | +---site org.eclipse.ui.internal.ViewSite (#01e03412) | | | +---pane org.eclipse.ui.internal.ViewPane (#004f439d) | | | +---isvToolBarMgr org.eclipse.ui.internal.ViewPane$PaneToolBarManager (#00b70bf2) | | | +---contributions java.util.ArrayList (#00899db0) | | | +---elementData java.lang.Object[16] (#00bffca1) | | | +---[0] org.eclipse.jface.action.ActionContributionItem (#01b619cf) | | | +---action org.eclipse.team.internal.ui.synchronize.actions.SynchronizePageDropDownAction (#00ffed11) | | | +---fView org.eclipse.team.internal.ui.synchronize.SynchronizeView (#015b011c) | +---singleton org.eclipse.ui.internal.progress.ProgressManager (#0020cf5e) | | | +---familyListeners java.util.Collections$SynchronizedMap (#0020eaf2) | | | +---m java.util.HashMap (#00330ca6) | | | +---table java.util.HashMap$Entry[16] (#006ccb80) | | | +---[2] java.util.HashMap$Entry (#0193047b) | | | +---value java.util.HashSet (#01feff10) | | | +---map java.util.HashMap (#006ed953) | | | +---table java.util.HashMap$Entry[16] (#00d02a4e) | | | +---[11] java.util.HashMap$Entry (#00923db4) | | | +---key org.eclipse.ui.internal.progress.WorkbenchSiteProgressService (#0127e2ee) | | | +---site org.eclipse.ui.internal.ViewSite (#01e03412) | | | +---pane org.eclipse.ui.internal.ViewPane (#004f439d) | | | +---isvMenuMgr org.eclipse.ui.internal.ViewPane$PaneMenuManager (#01715c02) | | | +---contributions java.util.ArrayList (#00cfb92c) | | | +---elementData java.lang.Object[10] (#003e97ca) | | | +---[0] org.eclipse.jface.action.ActionContributionItem (#0197cf84) | | | +---action org.eclipse.team.internal.ui.synchronize.actions.RemoveSynchronizeParticipantAction (#00a9c0dd) | | | +---view org.eclipse.team.internal.ui.synchronize.SynchronizeView (#015b011c) | +---singleton org.eclipse.ui.internal.progress.ProgressManager (#0020cf5e) | +---familyListeners java.util.Collections$SynchronizedMap (#0020eaf2) | +---m java.util.HashMap (#00330ca6) | +---table java.util.HashMap$Entry[16] (#006ccb80) | +---[2] java.util.HashMap$Entry (#0193047b) | +---value java.util.HashSet (#01feff10) | +---map java.util.HashMap (#006ed953) | +---table java.util.HashMap$Entry[16] (#00d02a4e) | +---[11] java.util.HashMap$Entry (#00923db4) | +---key org.eclipse.ui.internal.progress.WorkbenchSiteProgressService (#0127e2ee) | +---site org.eclipse.ui.internal.ViewSite (#01e03412) | +---pane org.eclipse.ui.internal.ViewPane (#004f439d) | +---isvMenuMgr org.eclipse.ui.internal.ViewPane$PaneMenuManager (#01715c02) | +---contributions java.util.ArrayList (#00cfb92c) | +---elementData java.lang.Object[10] (#003e97ca) | +---[1] org.eclipse.jface.action.ActionContributionItem (#01b8fe99) | +---action org.eclipse.team.internal.ui.synchronize.actions.RemoveSynchronizeParticipantAction (#00b4fce5) | +---view org.eclipse.team.internal.ui.synchronize.SynchronizeView (#015b011c)
Fixed in HEAD. Will be in the 20040528 build.
Could this please make it into one of the builds for tomorrow?
Verified in 20040529