Bug 209032 - Widget is disposed error when using the plugin registry view
Summary: Widget is disposed error when using the plugin registry view
Status: VERIFIED FIXED
Alias: None
Product: PDE
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.4   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.4 M4   Edit
Assignee: Chris Aniszczyk CLA
QA Contact:
URL:
Whiteboard:
Keywords: bugday
Depends on:
Blocks:
 
Reported: 2007-11-07 09:50 EST by Olivier Thomann CLA
Modified: 2007-12-11 13:14 EST (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Olivier Thomann CLA 2007-11-07 09:50:42 EST
Using 3.4M3, I sometimes get this error when I start my self-hosting workspace and the plugin registry view is open.
The error occurs when I shutdown the workspace.

Unhandled event loop exception during blocked modal context.
org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTException: Widget is disposed)
	at org.eclipse.swt.SWT.error(SWT.java:3706)
	at org.eclipse.swt.SWT.error(SWT.java:3624)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3721)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3358)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:158)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:326)
	at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:499)
	at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:267)
	at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.disconnectFromWorkspace(IDEWorkbenchAdvisor.java:396)
	at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.postShutdown(IDEWorkbenchAdvisor.java:313)
	at org.eclipse.ui.internal.Workbench.shutdown(Workbench.java:2718)
	at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:919)
	at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:836)
	at org.eclipse.ui.internal.Workbench$22.run(Workbench.java:1080)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1078)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1050)
	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:696)
	at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:675)
	at org.eclipse.ui.internal.WorkbenchWindow$2.run(WorkbenchWindow.java:790)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:788)
	at org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:741)
	at org.eclipse.jface.window.Window$3.shellClosed(Window.java:687)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:91)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:947)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:971)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:956)
	at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:306)
	at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1626)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3774)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:334)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1559)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1880)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4423)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2315)
	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:457)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3862)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:334)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1559)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1880)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4423)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2320)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3353)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2395)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2359)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2225)
	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:468)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:463)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)
	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:515)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:455)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1193)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1169)
Caused by: org.eclipse.swt.SWTException: Widget is disposed
	at org.eclipse.swt.SWT.error(SWT.java:3706)
	at org.eclipse.swt.SWT.error(SWT.java:3624)
	at org.eclipse.swt.SWT.error(SWT.java:3595)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:441)
	at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:334)
	at org.eclipse.swt.widgets.Tree.getItems(Tree.java:3132)
	at org.eclipse.pde.internal.runtime.registry.RegistryBrowser$4.findTreeBundleData(RegistryBrowser.java:370)
	at org.eclipse.pde.internal.runtime.registry.RegistryBrowser$4.run(RegistryBrowser.java:337)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:130)
	... 66 more
Comment 1 Brian Bauman CLA 2007-11-08 11:11:22 EST
We should be able to add a check to see if the widget is disposed before calling whatever action we call.
Comment 2 Chris Aniszczyk CLA 2007-11-11 15:54:58 EST
mine
Comment 3 Chris Aniszczyk CLA 2007-11-11 15:55:17 EST
I got this while doing bug 207831
Comment 4 Brian Bauman CLA 2007-12-11 13:14:26 EST
verified on I20071211-0010