Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 328553 - [Commands] Clicking checkbox in Preferences after accessing Capabilities results in 'Widget is disposed' exception
Summary: [Commands] Clicking checkbox in Preferences after accessing Capabilities resu...
Status: RESOLVED NOT_ECLIPSE
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.6.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Platform UI Triaged CLA
QA Contact: Prakash Rangaraj CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-10-24 15:31 EDT by Alice Connors CLA
Modified: 2010-10-26 10:12 EDT (History)
2 users (show)

See Also:


Attachments
Stack trace with 'Widget is disposed' exception (24.00 KB, application/msword)
2010-10-24 15:36 EDT, Alice Connors CLA
no flags Details
Stack trace with Shell.disposed() (31.50 KB, application/msword)
2010-10-26 09:37 EDT, Alice Connors CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
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.