Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 574441 - SharedLabelProvider leaks images
Summary: SharedLabelProvider leaks images
Status: RESOLVED FIXED
Alias: None
Product: PDE
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.20   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: 4.21 M3   Edit
Assignee: Simeon Andreev CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-06-24 10:18 EDT by Andrey Loskutov CLA
Modified: 2021-08-14 02:10 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey Loskutov CLA 2021-06-24 10:18:11 EDT
java.lang.Error: SWT Resource was not properly disposed
	at org.eclipse.swt.graphics.Resource.initNonDisposeTracking(Resource.java:172)
	at org.eclipse.swt.graphics.Resource.<init>(Resource.java:120)
	at org.eclipse.swt.graphics.Image.<init>(Image.java:703)
	at org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:338)
	at org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:287)
	at org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:265)
	at org.eclipse.pde.internal.ui.util.SharedLabelProvider.createImage(SharedLabelProvider.java:121)
	at org.eclipse.pde.internal.ui.util.SharedLabelProvider.get(SharedLabelProvider.java:90)
	at org.eclipse.pde.internal.ui.PDELabelProvider.getObjectImage(PDELabelProvider.java:539)
	at org.eclipse.pde.internal.ui.PDELabelProvider.getObjectImage(PDELabelProvider.java:523)
	at org.eclipse.pde.internal.ui.PDELabelProvider.getImage(PDELabelProvider.java:387)
	at org.eclipse.pde.internal.ui.util.SharedLabelProvider.getColumnImage(SharedLabelProvider.java:183)
	at org.eclipse.pde.internal.ui.launcher.FeatureBlock$FeatureTreeLabelProvider.getColumnImage(FeatureBlock.java:84)
	at org.eclipse.pde.internal.ui.launcher.FeatureBlock$FeatureTreeLabelProvider.update(FeatureBlock.java:138)
	at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:144)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:959)
	at org.eclipse.jface.viewers.CheckboxTreeViewer.doUpdateItem(CheckboxTreeViewer.java:124)
	at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:126)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:1037)
	at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:427)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
	at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2111)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:853)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:831)
	at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:604)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:779)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1690)
	at org.eclipse.jface.viewers.CheckboxTreeViewer.setCheckedElements(CheckboxTreeViewer.java:470)
	at org.eclipse.ui.dialogs.ContainerCheckedTreeViewer.setCheckedElements(ContainerCheckedTreeViewer.java:212)
	at org.eclipse.pde.internal.ui.shared.CachedCheckboxTreeViewer.setCheckedElements(CachedCheckboxTreeViewer.java:150)
	at org.eclipse.pde.internal.ui.launcher.FeatureBlock.setInput(FeatureBlock.java:1314)
	at org.eclipse.pde.internal.ui.launcher.FeatureBlock.initializeFrom(FeatureBlock.java:1122)
	at org.eclipse.pde.internal.ui.launcher.BlockAdapter.initializeFrom(BlockAdapter.java:64)
	at org.eclipse.pde.ui.launcher.PluginsTab.initializeFrom(PluginsTab.java:158)
	at org.eclipse.pde.ui.launcher.AbstractPDELaunchConfigurationTabGroup.lambda$0(AbstractPDELaunchConfigurationTabGroup.java:63)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74)
	at org.eclipse.pde.ui.launcher.AbstractPDELaunchConfigurationTabGroup.initializeFrom(AbstractPDELaunchConfigurationTabGroup.java:55)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupWrapper.initializeFrom(LaunchConfigurationTabGroupWrapper.java:182)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.displayInstanceTabs(LaunchConfigurationTabGroupViewer.java:867)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.lambda$4(LaunchConfigurationTabGroupViewer.java:727)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.inputChanged(LaunchConfigurationTabGroupViewer.java:742)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput0(LaunchConfigurationTabGroupViewer.java:674)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput(LaunchConfigurationTabGroupViewer.java:654)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.handleLaunchConfigurationSelectionChanged(LaunchConfigurationsDialog.java:1049)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.lambda$1(LaunchConfigurationsDialog.java:612)
	at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:823)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
	at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:820)
	at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1663)
	at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1084)
	at org.eclipse.jface.viewers.Viewer.setSelection(Viewer.java:376)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.doInitialTreeSelection(LaunchConfigurationsDialog.java:658)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.initializeContent(LaunchConfigurationsDialog.java:1185)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.createContents(LaunchConfigurationsDialog.java:473)
	at org.eclipse.jface.window.Window.create(Window.java:431)
	at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1094)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.create(LaunchConfigurationsDialog.java:378)
	at org.eclipse.jface.window.Window.open(Window.java:788)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.open(LaunchConfigurationsDialog.java:1238)
Comment 1 Simeon Andreev CLA 2021-08-13 07:35:44 EDT
From what I can tell, the following change for bug 305263 creates a label provider that is not disposed:

https://git.eclipse.org/c/pde/eclipse.pde.ui.git/commit/?id=ec1c57c2d1e40d33fcc36a6fb3a4fa682e1c01ff
Comment 2 Eclipse Genie CLA 2021-08-13 08:03:46 EDT
New Gerrit change created: https://git.eclipse.org/r/c/pde/eclipse.pde.ui/+/183992
Comment 4 Andrey Loskutov CLA 2021-08-14 02:10:27 EDT
Thanks Simeon!