[jbosstools-issues] [JBoss JIRA] (JBIDE-21673) JBoss Runtime Detection preference page throws StackOverflowError

Viacheslav Kabanovich (JIRA) issues at jboss.org
Thu Feb 11 15:01:00 EST 2016


    [ https://issues.jboss.org/browse/JBIDE-21673?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13161937#comment-13161937 ] 

Viacheslav Kabanovich commented on JBIDE-21673:
-----------------------------------------------

The infinite cycle can be fixed with setting table layout to the table instead of direct setting widths to its columns. Though the second way is quite legal and often used, in this case a complex interaction between layouts of involved widgets causes the infinite cycle of computing layouts.

> JBoss Runtime Detection preference page throws StackOverflowError
> -----------------------------------------------------------------
>
>                 Key: JBIDE-21673
>                 URL: https://issues.jboss.org/browse/JBIDE-21673
>             Project: Tools (JBoss Tools)
>          Issue Type: Bug
>          Components: runtime-detection
>            Reporter: Viacheslav Kabanovich
>
> 1. Start Eclipse.
> 2. Open Preferences.
> 3. Select JBoss Runtime Detection.
> Exception:
> {code}
> !ENTRY org.eclipse.ui 4 0 2016-02-10 19:18:24.266
> !MESSAGE Unhandled event loop exception
> !STACK 0
> org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.StackOverflowError)
> 	at org.eclipse.swt.SWT.error(SWT.java:4503)
> 	at org.eclipse.swt.SWT.error(SWT.java:4418)
> 	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)
> 	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3795)
> 	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3434)
> 	at org.eclipse.jface.window.Window.runEventLoop(Window.java:818)
> 	at org.eclipse.jface.window.Window.open(Window.java:794)
> 	at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.open(WorkbenchPreferenceDialog.java:211)
> 	at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:63)
> 	at org.eclipse.jface.action.Action.runWithEvent(Action.java:473)
> 	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:564)
> 	at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:396)
> 	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
> 	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4482)
> 	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1329)
> 	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3820)
> 	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3431)
> 	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1132)
> 	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
> 	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1023)
> 	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:157)
> 	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:651)
> 	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
> 	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:595)
> 	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
> 	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
> 	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:388)
> 	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:498)
> 	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:670)
> 	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:609)
> 	at org.eclipse.equinox.launcher.Main.run(Main.java:1516)
> 	at org.eclipse.equinox.launcher.Main.main(Main.java:1489)
> Caused by: java.lang.StackOverflowError
> 	at org.eclipse.swt.internal.gtk.OS._gtk_widget_size_allocate(Native Method)
> 	at org.eclipse.swt.internal.gtk.OS.gtk_widget_size_allocate(OS.java:14919)
> ----infinitle repeated part begin----
> 	at org.eclipse.swt.custom.TableEditor$1.controlMoved(TableEditor.java:95)
> 	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:224)
> 	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
> 	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4482)
> 	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1329)
> 	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1353)
> 	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1334)
> 	at org.eclipse.swt.widgets.TableColumn.gtk_size_allocate(TableColumn.java:395)
> 	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1991)
> 	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4718)
> 	at org.eclipse.swt.internal.gtk.OS._gtk_widget_size_allocate(Native Method)
> 	at org.eclipse.swt.internal.gtk.OS.gtk_widget_size_allocate(OS.java:14919)
> 	at org.eclipse.swt.widgets.Control.forceResize(Control.java:780)
> 	at org.eclipse.swt.widgets.Table.getClientArea(Table.java:1154)
> 	at org.eclipse.swt.custom.TableEditor.computeBounds(TableEditor.java:120)
> 	at org.eclipse.swt.custom.ControlEditor.layout(ControlEditor.java:223)
> 	at org.eclipse.swt.custom.TableEditor.layout(TableEditor.java:265)
> 	at org.eclipse.swt.custom.TableEditor$1.controlMoved(TableEditor.java:95)
> 	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:224)
> 	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
> 	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4482)
> 	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1329)
> 	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1353)
> 	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1334)
> 	at org.eclipse.swt.widgets.TableColumn.gtk_size_allocate(TableColumn.java:395)
> 	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1991)
> 	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4718)
> 	at org.eclipse.swt.internal.gtk.OS._gtk_widget_size_allocate(Native Method)
> 	at org.eclipse.swt.internal.gtk.OS.gtk_widget_size_allocate(OS.java:14919)
> 	at org.eclipse.swt.widgets.Control.forceResize(Control.java:780)
> 	at org.eclipse.swt.widgets.Table.getClientArea(Table.java:1154)
> 	at org.eclipse.swt.custom.TableEditor.computeBounds(TableEditor.java:120)
> 	at org.eclipse.swt.custom.ControlEditor.layout(ControlEditor.java:223)
> 	at org.eclipse.swt.custom.TableEditor.layout(TableEditor.java:265)
> ----infinitle repeated part end----
> 	at org.eclipse.swt.custom.ControlEditor.setEditor(ControlEditor.java:251)
> 	at org.eclipse.swt.custom.TableEditor.setEditor(TableEditor.java:240)
> 	at org.eclipse.swt.custom.TableEditor.setEditor(TableEditor.java:256)
> 	at org.jboss.tools.runtime.ui.internal.preferences.RuntimePreferencePage.createDetectorViewer(RuntimePreferencePage.java:208)
> 	at org.jboss.tools.runtime.ui.internal.preferences.RuntimePreferencePage.createContents(RuntimePreferencePage.java:140)
> 	at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:241)
> 	at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1429)
> 	at org.eclipse.jface.preference.PreferenceDialog$9.run(PreferenceDialog.java:1196)
> 	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
> 	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50)
> 	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:173)
> 	at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1188)
> 	at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:608)
> 	at org.eclipse.jface.preference.PreferenceDialog$5.lambda$0(PreferenceDialog.java:655)
> 	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
> 	at org.eclipse.jface.preference.PreferenceDialog$5.selectionChanged(PreferenceDialog.java:652)
> 	at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:876)
> 	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
> 	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50)
> 	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:173)
> 	at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:873)
> 	at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1242)
> 	at org.eclipse.jface.viewers.StructuredViewer$5.widgetSelected(StructuredViewer.java:1268)
> 	at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:265)
> 	at org.eclipse.jface.util.OpenStrategy.access$5(OpenStrategy.java:259)
> 	at org.eclipse.jface.util.OpenStrategy$1.lambda$1(OpenStrategy.java:431)
> 	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
> 	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
> 	... 36 more
> {code}
> 4. Select another preference page.
> 5. Again try to select JBoss Runtime Detection.
> Now, it opens successfully.
> 6. Try to adjust split between the tree of pages and the page.
> Preferences dialog window starts uncontrollably expand until it fills the entire screen width.



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jbosstools-issues mailing list