Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 334505

Summary: Widget is disposed when closing MAT with compare basket open
Product: [Tools] MAT Reporter: Andrew Johnson <andrew_johnson>
Component: GUIAssignee: Andrew Johnson <andrew_johnson>
Status: RESOLVED FIXED QA Contact:
Severity: minor    
Priority: P3    
Version: 1.1   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Andrew Johnson CLA 2011-01-17 04:59:57 EST
The problem occurs when closing MAT after adding a table to the compare basket.
It occurs with the current Tycho/Maven builds  (e.g. 12 January 2011).

org.eclipse.swt.SWTException: Widget is disposed
at org.eclipse.swt.SWT.error(SWT.java:4083)
at org.eclipse.swt.SWT.error(SWT.java:3998)
at org.eclipse.swt.SWT.error(SWT.java:3969)
at org.eclipse.swt.widgets.Widget.error(Widget.java:468)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:340)
at org.eclipse.swt.widgets.Table.deselectAll(Table.java:1966)
at org.eclipse.jface.viewers.TableViewer.doDeselectAll(TableViewer.java:277)
at org.eclipse.jface.viewers.AbstractTableViewer.setSelectionToWidget(AbstractTableViewer.java:908)
at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1741)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1429)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1383)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1485)
at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:537)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1444)
at org.eclipse.mat.ui.compare.CompareBasketView$1.partClosed(CompareBasketView.java:193)
at org.eclipse.ui.internal.PartListenerList2$3.run(PartListenerList2.java:100)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.runtime.Platform.run(Platform.java:888)
at org.eclipse.ui.internal.PartListenerList2.fireEvent(PartListenerList2.java:55)
at org.eclipse.ui.internal.PartListenerList2.firePartClosed(PartListenerList2.java:98)
at org.eclipse.ui.internal.PartService.firePartClosed(PartService.java:227)
at org.eclipse.ui.internal.WorkbenchPagePartList.firePartClosed(WorkbenchPagePartList.java:39)
at org.eclipse.ui.internal.PartList.partClosed(PartList.java:274)
at org.eclipse.ui.internal.PartList.removePart(PartList.java:186)
at org.eclipse.ui.internal.WorkbenchPage.disposePart(WorkbenchPage.java:1720)
at org.eclipse.ui.internal.WorkbenchPage.partRemoved(WorkbenchPage.java:1713)
at org.eclipse.ui.internal.ViewFactory.releaseView(ViewFactory.java:257)
at org.eclipse.ui.internal.Perspective.dispose(Perspective.java:292)
at org.eclipse.ui.internal.WorkbenchPage.dispose(WorkbenchPage.java:1792)
at org.eclipse.ui.internal.WorkbenchWindow.closeAllPages(WorkbenchWindow.java:861)
at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1696)
at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:734)
at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:710)
at org.eclipse.ui.internal.WorkbenchWindow$5.run(WorkbenchWindow.java:826)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:824)
at org.eclipse.jface.window.WindowManager.close(WindowManager.java:109)
at org.eclipse.ui.internal.Workbench$18.run(Workbench.java:1105)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1102)
at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:1031)
at org.eclipse.ui.internal.Workbench$25.run(Workbench.java:1275)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.Workbench.close(Workbench.java:1273)
at org.eclipse.ui.internal.Workbench.close(Workbench.java:1245)
at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:731)
at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:710)
at org.eclipse.ui.internal.WorkbenchWindow$5.run(WorkbenchWindow.java:826)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:824)
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:98)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:308)
at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1665)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4162)
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)
at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)
at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454)
at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:497)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4251)
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)
at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)
at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454)
at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:497)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4251)
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)
at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2459)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3655)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.mat.ui.rcp.Application.start(Application.java:51)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
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:369)
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:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Comment 1 Andrew Johnson CLA 2011-01-22 08:55:31 EST
This error also occurs on closing the dump with the compare basket open.
Comment 2 Andrew Johnson CLA 2011-02-06 14:33:53 EST
We can fix this by adding a simple !table.isDisposed() test. We can't do anything to the table when cleaning up at the point, so it seems safe enough.
Comment 3 Andrew Johnson CLA 2011-02-06 14:36:22 EST
Simple fix applied to CompareBasketView.