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

Bug 328553

Summary: [Commands] Clicking checkbox in Preferences after accessing Capabilities results in 'Widget is disposed' exception
Product: [Eclipse Project] Platform Reporter: Alice Connors <alicec>
Component: UIAssignee: Platform UI Triaged <platform-ui-triaged>
Status: RESOLVED NOT_ECLIPSE QA Contact: Prakash Rangaraj <prakash>
Severity: normal    
Priority: P3 CC: pwebster, remy.suen
Version: 3.6.1   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
Stack trace with 'Widget is disposed' exception
none
Stack trace with Shell.disposed() none

Description Alice Connors CLA 2010-10-24 15:31:15 EDT
Build Identifier: M20100909-0800 (Version: 3.6.1.r361_v20100827-9OArFLdFjY-ThSQXmKvKz0_T)

If I open the Capabilities preferences and close them, then go back into Preferences and click a checkbox, I get a 'org.eclipse.swt.SWTException: Widget is disposed' exception in the error log.


Reproducible: Always

Steps to Reproduce:
1. Click Windows->Preferences->General->Capabilities
2. Click OK to exit preferences.
3. Click Windows->Preferences->General.  Click on the 'Always run in backgroup' checkbox in the General preferences.  (Clicking on any checkbox in preferences will do.)
4. Click OK to exit preferences.  You'll see an 'Unhandled event loop exception' in the error log.  Stack trace containing the 'Widget is disposed' exception is attached.
Comment 1 Alice Connors CLA 2010-10-24 15:36:54 EDT
Created attachment 181600 [details]
Stack trace with 'Widget is disposed' exception
Comment 2 Paul Webster CLA 2010-10-25 07:39:32 EDT
Alice, could you please put a breakpoint in org.eclipse.swt.widgets.Shell.dispose(), and activate the breakpoint after the first dialog but before or during the second dialog?  We need to find out if anything is deliberately disposing the Shell while we're in the source provider.

I can't reproduce on linux, but what's worse is that Shell seems to be in the middle of a SWT.Activate event.  It can't be disposed, unless something during the event is disposing it.  Prakash, can you have a look?

org.eclipse.swt.SWTException: Widget is disposed
	at org.eclipse.swt.SWT.error(Unknown Source)
	at org.eclipse.swt.SWT.error(Unknown Source)
	at org.eclipse.swt.SWT.error(Unknown Source)
	at org.eclipse.swt.widgets.Widget.error(Unknown Source)
	at org.eclipse.swt.widgets.Widget.checkWidget(Unknown Source)
	at org.eclipse.swt.widgets.Widget.getData(Unknown Source)
	at org.eclipse.ui.internal.services.WorkbenchSourceProvider.handleCheck(Unknown Source)
	at org.eclipse.ui.internal.services.WorkbenchSourceProvider.checkOtherSources(Unknown Source)
	at org.eclipse.ui.internal.services.WorkbenchSourceProvider$6.handleEvent(Unknown Source)
	at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Display.filterEvent(Unknown Source)
	at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(Unknown Source)
	at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Unknown Source)
	at org.eclipse.swt.widgets.Control.windowProc(Unknown Source)
	at org.eclipse.swt.widgets.Canvas.windowProc(Unknown Source)
	at org.eclipse.swt.widgets.Decorations.windowProc(Unknown Source)
	at org.eclipse.swt.widgets.Shell.windowProc(Unknown Source)
	at org.eclipse.swt.widgets.Display.windowProc(Unknown Source)
	at org.eclipse.swt.internal.win32.OS.BringWindowToTop(Native Method)
	at org.eclipse.swt.widgets.Decorations.bringToTop(Unknown Source)
	at org.eclipse.swt.widgets.Shell.open(Unknown Source)
	at org.eclipse.jface.window.Window.open(Unknown Source)
	at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.open(Unknown Source)
	at org.eclipse.ui.internal.OpenPreferencesAction.run(Unknown Source)
	at org.eclipse.jface.action.Action.runWithEvent(Unknown Source)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(Unknown Source)
	at org.eclipse.jface.action.ActionContributionItem.access$2(Unknown Source)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(Unknown Source)
	at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Unknown Source)
	at org.eclipse.ui.internal.Workbench.runUI(Unknown Source)
	at org.eclipse.ui.internal.Workbench.access$4(Unknown Source)
	at org.eclipse.ui.internal.Workbench$7.run(Unknown Source)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Unknown Source)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Unknown Source)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(Unknown Source)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(Unknown Source)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(Unknown Source)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(Unknown Source)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(Unknown Source)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(Unknown Source)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Unknown Source)
	at org.eclipse.equinox.launcher.Main.basicRun(Unknown Source)
	at org.eclipse.equinox.launcher.Main.run(Unknown Source)
	at org.eclipse.equinox.launcher.Main.main(Unknown Source)
Comment 3 Remy Suen CLA 2010-10-25 07:46:45 EDT
Cannot reproduce with eclipse-SDK-3.6.1-win32.zip on Windows XP.
Comment 4 Prakash Rangaraj CLA 2010-10-26 03:55:18 EDT
Can't reproduce on Mac either.

Alice,
    Can you try out what Paul said and let us know?
Comment 5 Paul Webster CLA 2010-10-26 07:24:35 EDT
.
Comment 6 Alice Connors CLA 2010-10-26 09:37:07 EDT
Created attachment 181724 [details]
Stack trace with Shell.disposed()
Comment 7 Alice Connors CLA 2010-10-26 09:40:13 EDT
1. Click Windows->Preferences->General->Capabilities
2. Click OK to exit preferences.
Enabled the breakpoint in Shell.dispose().
3. Click Windows->Preferences.  Hit the breakpoint.  Stack trace is attached.
Comment 8 Paul Webster CLA 2010-10-26 09:51:11 EDT
EditingCapabilitiesHandler is closing your shell.  What is that class (it's not in the Eclipse SDK)?  Where is it coming from?

Also, please use <filename>.txt and attach text/plain docs ... I'm on linux, msword docs cause me some grief :-)

PW
Comment 9 Alice Connors CLA 2010-10-26 10:09:51 EDT
Looks like com.ibm.xtools.common.ui.reduction.internal.EditingCapabilitiesHandler.  I'll track it down from here.  Thanks for your help.
Comment 10 Remy Suen CLA 2010-10-26 10:12:30 EDT
(In reply to comment #9)
> Looks like
> com.ibm.xtools.common.ui.reduction.internal.EditingCapabilitiesHandler.  I'll
> track it down from here.  Thanks for your help.

Resolving as NOT_ECLIPSE. Please feel free to reopen if you suspect there is a problem in Eclipse.