Hi,
I happen to erratically and thus not reproducible encounter “SWTException Invalid Thread Access” when using any if loop (Knime and Community If-Nodes).
Based on what I experience I suppose the “loose ends”, i.e. a Table Creator, is or was already executed before the if-node was evaluated. Hence, resulting in a partially executed loop. As follows to examples.
I believe this is happening in larger quantities in the recent past as the setup had not changed but Knime got updated. In the past months to years the SWTException Invalid Thread Access was not thrown. Only when connecting all incoming data “branches” or manually re-executing after the IF was evaluated, the entire if-loop get properly disabled, though.
Example 1
Example 2
Manually re-executed to disable nodes
Edit: managed to get the exception log
eclipse.buildId=unknown
java.version=11.0.10
java.vendor=AdoptOpenJDK
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments: -os linux -ws gtk -arch x86_64
org.eclipse.ui
Error
Sat May 14 11:31:30 CEST 2022
Unhandled event loop exception
org.eclipse.swt.SWTException: Widget is disposed
at org.eclipse.swt.SWT.error(SWT.java:4889)
at org.eclipse.swt.SWT.error(SWT.java:4804)
at org.eclipse.swt.SWT.error(SWT.java:4775)
at org.eclipse.swt.widgets.Widget.error(Widget.java:555)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:470)
at org.eclipse.swt.widgets.Control.redraw(Control.java:4584)
at org.knime.workbench.editor2.directannotationedit.FlatButton.lambda$0(FlatButton.java:388)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5067)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4573)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
at org.knime.product.rcp.KNIMEApplication.start(KNIMEApplication.java:183)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
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:401)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
at org.eclipse.equinox.launcher.Main.run(Main.java:1461)
at org.eclipse.equinox.launcher.Main.main(Main.java:1434)
Session Data
eclipse.buildId=unknown
java.version=11.0.10
java.vendor=AdoptOpenJDK
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments: -os linux -ws gtk -arch x86_64
Any idea?
Many thanks in advance
Mike