Bug 307122 SelectionServiceImpl leaks RATs
SelectionServiceImpl.track adds an IRunAndTrack that is never removed. So for example each time an editor is opened and closed two extra RATs are added to the application context (once for open and once for close).
bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/SelectionServiceImpl.java
void preDestroy() {
		IEclipseContext rootContext = serviceRoot.getContext();
		if (rootContext != context) {
			ESelectionService selectionService = (ESelectionService) rootContext
					.get(ESelectionService.class.getName());
			for (ISelectionListener listener : genericListeners) {
				selectionService.removeSelectionListener(listener);
			}
			for (Entry<String, Set<ISelectionListener>> entry : targetedListeners.entrySet()) {
				String partId = entry.getKey();
				for (ISelectionListener listener : entry.getValue()) {
					selectionService.removeSelectionListener(partId, listener);
				}
			}
		}
		genericListeners.clear();
		targetedListeners.clear();
		eventBroker.unsubscribe(eventHandler);
	}
	@PostConstruct
	void postConstruct() {
		eventBroker
				.subscribe(UIEvents.buildTopic(UIEvents.Context.TOPIC, UIEvents.Context.CONTEXT),
						eventHandler);
		for (MPart part : partService.getParts()) {
			track(part);
		}
	}
	@Inject
	void setPart(@Optional @Named(IServiceConstants.ACTIVE_PART) final MPart part) {