Bug 1379801

Summary: JBDS 9.1 with GTK 3.20 NullPointerException "Unhandled event loop exception"
Product: [JBoss] JBoss Data Virtualization 6 Reporter: Gerald Nunn <gnunn>
Component: Teiid DesignerAssignee: Barry LaFond <blafond>
Status: CLOSED UPSTREAM QA Contact: Matus Makovy <mmakovy>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.3.0CC: jolee, mbaluch, vhalbert
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-09-29 08:49:42 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Gerald Nunn 2016-09-27 17:11:44 UTC
Description of problem:

When using JBDS 9.1 with GTK 3.20, trying to open some of the dialogs like "New Driver Defintiion" fails with the error "Unhandled event loop exception". This appears to because of an incompatibility between SWT and GTK 3.20 as documented here:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=497150

Version-Release number of selected component (if applicable):


How reproducible: Always

Steps to Reproduce:
1. Create JDBC Connection in guide
2. Click "New Driver Definition" button
3.

Actual results: 

Error with following stack trace:

java.lang.NullPointerException
	at org.eclipse.swt.widgets.TabFolder.gtk_switch_page(TabFolder.java:570)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2009)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4723)
	at org.eclipse.swt.internal.gtk.OS._gtk_widget_show(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_widget_show(OS.java:14774)
	at org.eclipse.swt.widgets.TabFolder.createItem(TabFolder.java:311)
	at org.eclipse.swt.widgets.TabItem.createWidget(TabItem.java:123)
	at org.eclipse.swt.widgets.TabItem.<init>(TabItem.java:75)
	at org.eclipse.datatools.connectivity.internal.ui.dialogs.DriverDialog.createDialogArea(DriverDialog.java:298)
	at org.eclipse.jface.dialogs.TitleAreaDialog.createContents(TitleAreaDialog.java:161)
	at org.eclipse.datatools.connectivity.internal.ui.dialogs.DriverDialog.createContents(DriverDialog.java:734)
	at org.eclipse.jface.window.Window.create(Window.java:430)
	at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1096)
	at org.eclipse.jface.window.Window.open(Window.java:792)
	at org.eclipse.datatools.connectivity.internal.ui.DriverListCombo$NewButtonSelectionChangedListener.widgetSelected(DriverListCombo.java:813)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4481)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1329)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3819)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3430)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:827)
	at org.eclipse.jface.window.Window.open(Window.java:803)
	at org.eclipse.datatools.connectivity.ui.actions.AddProfileViewAction.execute(AddProfileViewAction.java:198)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:295)
	at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
	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.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:252)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:234)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:152)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:493)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:486)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210)
	at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:799)
	at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:675)
	at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$7(HandledContributionItem.java:659)
	at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:592)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4481)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1329)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3819)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3430)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:694)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:606)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:139)
	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:380)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
	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:669)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1488)


Expected results:

Dialog opens

Additional info:

This can be worked around by forcing eclipse to use GTK 2. To do so, modify studio/jbdevstudio.ini to add the following:

--launcher.GTK_version
2

Comment 2 Matus Makovy 2016-09-29 08:49:42 UTC
We are using JIRA to track issues for tooling.
This is reported here: https://issues.jboss.org/browse/TEIIDDES-2883

I will close this BZ - see linked JIRA for more info.