Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 263973 - Widget disposed in Plugin Registry View
Summary: Widget disposed in Plugin Registry View
Status: RESOLVED FIXED
Alias: None
Product: PDE
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.5   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: 3.5 M6   Edit
Assignee: Chris Aniszczyk CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-02-06 11:51 EST by Benjamin Muskalla CLA
Modified: 2009-02-13 10:48 EST (History)
2 users (show)

See Also:


Attachments
patch (9.56 KB, patch)
2009-02-13 07:29 EST, Jacek Pospychala CLA
caniszczyk: iplog+
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Benjamin Muskalla CLA 2009-02-06 11:51:38 EST
N20090205-2000

This happend while closing the Plugin Registry View (i think it was still initializing the list of plugins)


org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTException: Widget is disposed)
	at org.eclipse.swt.SWT.error(SWT.java:3860)
	at org.eclipse.swt.SWT.error(SWT.java:3775)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3451)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3098)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2388)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2352)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2204)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:499)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:333)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:492)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
	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:368)
	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:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:556)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:511)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1284)
Caused by: org.eclipse.swt.SWTException: Widget is disposed
	at org.eclipse.swt.SWT.error(SWT.java:3860)
	at org.eclipse.swt.SWT.error(SWT.java:3775)
	at org.eclipse.swt.SWT.error(SWT.java:3746)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:446)
	at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:384)
	at org.eclipse.swt.widgets.Tree.getSelection(Tree.java:1691)
	at org.eclipse.jface.viewers.TreeViewer.getSelection(TreeViewer.java:255)
	at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:343)
	at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2476)
	at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2872)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1388)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:402)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1340)
	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1444)
	at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:537)
	at org.eclipse.ui.dialogs.FilteredTree$NotifyingTreeViewer.refresh(FilteredTree.java:1235)
	at org.eclipse.pde.internal.runtime.registry.RegistryBrowser.refresh(RegistryBrowser.java:661)
	at org.eclipse.pde.internal.runtime.registry.RegistryBrowserModelChangeListener.update(RegistryBrowserModelChangeListener.java:138)
	at org.eclipse.pde.internal.runtime.registry.RegistryBrowserModelChangeListener$1.run(RegistryBrowserModelChangeListener.java:26)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
	... 22 more
Comment 1 Chris Aniszczyk CLA 2009-02-06 13:04:32 EST
Jacek, do you have any thoughts?
Comment 2 Jacek Pospychala CLA 2009-02-13 07:29:32 EST
Created attachment 125625 [details]
patch

Issue was that the Plug-in registry initialization job was trying to refresh view when it was actually closed.

Patch solves this issue in few ways:
1. terminate job when view is closed
2. check that UI is not disposed in all public PluginRegistry methods, before UI calls.

I have also removed completely unused or reduced visibility of internal PluginRegistry methods.
Comment 3 Jacek Pospychala CLA 2009-02-13 07:29:53 EST
Patch is ready :-)
Comment 4 Chris Aniszczyk CLA 2009-02-13 10:30:41 EST
Thanks Jacek.
Comment 5 Chris Aniszczyk CLA 2009-02-13 10:38:59 EST
done.

> 20090213