Bash-script KNIME call @ Linux fails: "Cannot open display: Knime: JVM terminated. Exit code=4"

Hello to the community and the KNIME team,

we are having some recurring trouble when calling KNIME (4.7.1) workflow executions via a Linux bash script.

Sometimes, the execution stops, and KNIME closes with an error message. Other times, the same workflow runs through without error. There is no pattern to this visible to us.

In the KNIME logging/console output, there are no messages marked as ERROR, only warnings.

Here is an example output (edited for shortness):

sudo -u sa-knime -g rol-knime-admin run-knime-flow.sh --stage=devel --domain=tankers --project=fleetperf CT_FLEETPERF_Convert_Heating_Logs_to_Joint_Table
2023-08-15T12:01:09+02:00 - Flow ‘CT_FLEETPERF_Convert_Heating_Logs_to_Joint_Table’ startet
CompileCommand: exclude javax/swing/text/GlyphView.getBreakSpot bool exclude = true
Aug 15, 2023 12:01:12 PM org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-frontend-jaxrs (153) [org.apache.cxf.jaxrs.JAXRSBindingFactory]
Aug 15, 2023 12:01:12 PM org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-transports-http (157) [org.apache.cxf.transport.http.HTTPTransportFactory, org.apache.cxf.transport.http.HTTPWSDLExtensionLoader, org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder, org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder, org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider]
Aug 15, 2023 12:01:12 PM org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions
INFO: Adding the extensions from bundle org.apache.cxf.cxf-rt-transports-http-hc (158) [org.apache.cxf.transport.http.HTTPConduitFactory, org.apache.cxf.transport.ConduitInitiator]
Aug 15, 2023 12:01:12 PM org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered
Aug 15, 2023 12:01:12 PM org.apache.cxf.bus.blueprint.NamespaceHandlerRegisterer register
INFO: Aries Blueprint packages not available. So namespaces will not be registered

… (some warnings, but ones we have in other workflows as well, which run just fine)

Aug 15, 2023 12:01:36 PM org.apache.cxf.bus.osgi.CXFExtensionBundleListener unregister
INFO: Removing the extensions for bundle 153
Aug 15, 2023 12:01:36 PM org.apache.cxf.bus.osgi.CXFExtensionBundleListener unregister
INFO: Removing the extensions for bundle 157
Aug 15, 2023 12:01:36 PM org.apache.cxf.bus.osgi.CXFExtensionBundleListener unregister
INFO: Removing the extensions for bundle 158
*Knime: Cannot open display: *
Knime:
JVM terminated. Exit code=4

In the following Java parameter logging, there is no error message as well:

/opt/knime-4.7//plugins/org.knime.binary.jre.linux.x86_64_17.0.5.20221116/jre/bin/java
-Djava.security.properties=plugins/org.knime.binary.jre.linux.x86_64_17.0.5.20221116/security.properties
-Darrow.enable_unsafe_memory_access=true
-Darrow.memory.debug.allocator=false
-Darrow.enable_null_check_for_get=false
–add-opens=java.base/sun.security.ssl=ALL-UNNAMED
–add-opens=java.base/sun.security.util=ALL-UNNAMED
–add-opens=java.security.jgss/sun.security.jgss.krb5=ALL-UNNAMED
–add-exports=java.security.jgss/sun.security.jgss=ALL-UNNAMED
–add-exports=java.security.jgss/sun.security.jgss.spi=ALL-UNNAMED
–add-exports=java.security.jgss/sun.security.krb5.internal=ALL-UNNAMED
–add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED
-server
-Dsun.java2d.d3d=false
-Dosgi.classloader.lock=classname
-XX:+UnlockDiagnosticVMOptions
-Dsun.net.client.defaultReadTimeout=0
-XX:CompileCommand=exclude,javax/swing/text/GlyphView,getBreakSpot
-Dknime.xml.disable_external_entities=true
–add-opens=java.base/java.lang=ALL-UNNAMED
–add-opens=java.base/java.lang.invoke=ALL-UNNAMED
–add-opens=java.base/java.net=ALL-UNNAMED
–add-opens=java.base/java.nio=ALL-UNNAMED
–add-opens=java.base/java.nio.channels=ALL-UNNAMED
–add-opens=java.base/java.util=ALL-UNNAMED
–add-opens=java.base/sun.nio.ch=ALL-UNNAMED
–add-opens=java.base/sun.nio=ALL-UNNAMED
–add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED
–add-opens=java.base/sun.net.www.protocol.http=ALL-UNNAMED
-Xmx16g
-Dorg.eclipse.swt.internal.gtk.disablePrinting
-Dchromium.multi_threaded_message_loop=true
-jar /opt/knime-4.7//plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar
-os linux
-ws gtk
-arch x86_64
-launcher /opt/knime-4.7/knime
-name Knime
–launcher.library /opt/knime-4.7//plugins/com.equo.chromium.cef.gtk.linux.x86_64_95.0.6/chromium-4638/eclipse_11701.so
-startup /opt/knime-4.7//plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar
–launcher.overrideVmargs
-exitdata b0013
-nosave
-reset
-application org.knime.product.KNIME_BATCH_APPLICATION
-workflowDir=/srv/knime/flows/devel/tankers/fleetperf/CT_FLEETPERF_Convert_Heating_Logs_to_Joint_Table
-vm /opt/knime-4.7//plugins/org.knime.binary.jre.linux.x86_64_17.0.5.20221116/jre/bin/java
-vmargs
-Djava.security.properties=plugins/org.knime.binary.jre.linux.x86_64_17.0.5.20221116/security.properties
-Darrow.enable_unsafe_memory_access=true
-Darrow.memory.debug.allocator=false
-Darrow.enable_null_check_for_get=false
–add-opens=java.base/sun.security.ssl=ALL-UNNAMED
–add-opens=java.base/sun.security.util=ALL-UNNAMED
–add-opens=java.security.jgss/sun.security.jgss.krb5=ALL-UNNAMED
–add-exports=java.security.jgss/sun.security.jgss=ALL-UNNAMED
–add-exports=java.security.jgss/sun.security.jgss.spi=ALL-UNNAMED
–add-exports=java.security.jgss/sun.security.krb5.internal=ALL-UNNAMED
–add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED
-server
-Dsun.java2d.d3d=false
-Dosgi.classloader.lock=classname
-XX:+UnlockDiagnosticVMOptions
-Dsun.net.client.defaultReadTimeout=0
-XX:CompileCommand=exclude,javax/swing/text/GlyphView,getBreakSpot
-Dknime.xml.disable_external_entities=true
–add-opens=java.base/java.lang=ALL-UNNAMED
–add-opens=java.base/java.lang.invoke=ALL-UNNAMED
–add-opens=java.base/java.net=ALL-UNNAMED
–add-opens=java.base/java.nio=ALL-UNNAMED
–add-opens=java.base/java.nio.channels=ALL-UNNAMED
–add-opens=java.base/java.util=ALL-UNNAMED
–add-opens=java.base/sun.nio.ch=ALL-UNNAMED
–add-opens=java.base/sun.nio=ALL-UNNAMED
–add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED
–add-opens=java.base/sun.net.www.protocol.http=ALL-UNNAMED
-Xmx16g
-Dorg.eclipse.swt.internal.gtk.disablePrinting
-Dchromium.multi_threaded_message_loop=true
-jar /opt/knime-4.7//plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar

Does anyone have any ideas?

Best regards,
Jan

Exit code=4 means that the workflow execution failed. If you have a look at the log file you should find more information where (and why) in the workflow excecution has failed.

There is unfortunately no hint there. No error messages or anything. The workflow does not fail at all when starting it in KNIME, and only sometimes, but randomly, when starting it via the bash script.

Hello Thor,

I figured out what was wrong now. If the data processed had certain characteristics, a node will fail. The weird thing is that the error message for that failing node is not output to the KNIME logging output, where usually I get all warnings and errors. That is why I was not able to find it in the beginning.

Thank you for your help.

You can close this topic now :slight_smile:

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.