Uploaded image for project: 'Tools (JBoss Tools)'
  1. Tools (JBoss Tools)
  2. JBIDE-17528

'Widget is disposed' exception in JBoss Central

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Minor
    • 4.2.0.Beta2
    • 4.2.0.Beta2
    • central
    • Hide

      During first start of Eclipse after JBoss Tools is installed get to central as fast as possible and close it.

      Show
      During first start of Eclipse after JBoss Tools is installed get to central as fast as possible and close it.

    Description

      org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTException: Widget is disposed)
      	at org.eclipse.swt.SWT.error(SWT.java:4441)
      	at org.eclipse.swt.SWT.error(SWT.java:4356)
      	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:139)
      	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3781)
      	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3419)
      	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1152)
      	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
      	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1033)
      	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
      	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:635)
      	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
      	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:578)
      	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
      	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
      	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
      	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
      	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
      	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:379)
      	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:233)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
      	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
      	at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
      	at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
      Caused by: org.eclipse.swt.SWTException: Widget is disposed
      	at org.eclipse.swt.SWT.error(SWT.java:4441)
      	at org.eclipse.swt.SWT.error(SWT.java:4356)
      	at org.eclipse.swt.SWT.error(SWT.java:4327)
      	at org.eclipse.swt.widgets.Widget.error(Widget.java:476)
      	at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:413)
      	at org.eclipse.swt.widgets.Composite.getChildren(Composite.java:610)
      	at org.jboss.tools.central.editors.GettingStartedPage.disposeChildren(GettingStartedPage.java:1124)
      	at org.jboss.tools.central.editors.GettingStartedPage.addProxyWizardLinks(GettingStartedPage.java:533)
      	at org.jboss.tools.central.editors.GettingStartedPage.access$12(GettingStartedPage.java:531)
      	at org.jboss.tools.central.editors.GettingStartedPage$5$1.run(GettingStartedPage.java:520)
      	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
      	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)
      	... 24 more

      It happens because of WIzard Links area is populated in delayed async execution and if download is long enough central editor can get closed before deferred UI processing started.

      Simple solution is check that central is still opened after getProxyWizards() called and to modify async exec so it check if widget is disposed before doing any UI manipulations in central editor.

      Attachments

        Activity

          People

            nivologd@gmail.com Denis Golovin (Inactive)
            nivologd@gmail.com Denis Golovin (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: