Sample Header Ad - 728x90

SWTError: No more handles [gtk_init_check() failed running web-app in Tomcat9 on RHEL9.4 with Xvfb

0 votes
1 answer
92 views
We are running a third-party Java web application in Tomcat 9.0.87 on RHEL9.4. When the web app starts it raises the following exception that we (working with vendor support team) can't seem to get rid of.
2024-09-04 08:38:46,255 [ ERROR ] | SWT dispatcher | o.l.core.base.util.Threads:226 - Uncaught exception 'No more handles [gtk_init_check() failed]' received on thread Thread[SWT dispatcher,5,main]
org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
        at org.eclipse.swt.SWT.error(Unknown Source)
        at org.eclipse.swt.widgets.Display.createDisplay(Unknown Source)
        at org.eclipse.swt.widgets.Display.create(Unknown Source)
        at org.eclipse.swt.graphics.Device.(Unknown Source)
        at org.eclipse.swt.widgets.Display.(Unknown Source)
        at org.eclipse.swt.widgets.Display.(Unknown Source)
        at org.eclipse.swt.widgets.Display.getDefault(Unknown Source)
We are running Xvfb as a service
# cat /etc/systemd/system/Xvfb.service
[Unit]
Description=X Virtual Frame Buffer Service
After=network.target

[Service]
User=root
ExecStart=/usr/bin/Xvfb :99 -ac -screen 0 1280x1024x24

[Install]
WantedBy=multi-user.target

# systemctl status Xvfb.service
● Xvfb.service - X Virtual Frame Buffer Service
     Loaded: loaded (/etc/systemd/system/Xvfb.service; enabled; preset: disabled)
     Active: active (running) since Wed 2024-09-04 08:43:52 BST; 19min ago
   Main PID: 830483 (Xvfb)
      Tasks: 1 (limit: 11104)
     Memory: 8.4M
        CPU: 27ms
     CGroup: /system.slice/Xvfb.service
             └─830483 /usr/bin/Xvfb :99 -ac -screen 0 1280x1024x24

Sep 04 08:43:52 systemd: Started X Virtual Frame Buffer Service.
Tomcat starts with
# cat /usr/share/tomcat/bin/setenv.sh
export DISPLAY=:99
export SWT_GTK3=0
export CATALINA_OPTS="-Xms2048M -Xmx2048M -XX:MaxMetaspaceSize=256M -Djava.awt.headless=true -Dprism.order=sw"

# cat /usr/share/tomcat/bin/setenv.sh
export DISPLAY=:99
export SWT_GTK3=0
export CATALINA_OPTS="-Xms2048M -Xmx2048M -XX:MaxMetaspaceSize=256M -Djava.awt.headless=true -Dprism.order=sw"
[root@gbjhvice092 ~]# systemctl status tomcat
● tomcat.service - Apache Tomcat Web Application Container
     Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; preset: disabled)
     Active: active (running) since Wed 2024-09-04 08:38:32 BST; 29min ago
   Main PID: 828457 (java)
      Tasks: 52 (limit: 11104)
     Memory: 777.3M
        CPU: 1min 10.333s
     CGroup: /system.slice/tomcat.service
             └─828457 /usr/lib/jvm/jre/bin/java -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -classpath /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-jul>
An extract from catalina.log :
04-Sep-2024 06:12:17.666 INFO [Thread-7] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
04-Sep-2024 06:12:19.160 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.87
04-Sep-2024 06:12:19.168 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jan 10 1970 04:21:54 UTC
04-Sep-2024 06:12:19.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.87.0
04-Sep-2024 06:12:19.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
04-Sep-2024 06:12:19.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            5.14.0-427.31.1.el9_4.x86_64
04-Sep-2024 06:12:19.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
04-Sep-2024 06:12:19.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-17-openjdk-17.0.12.0.7-2.el9.x86_64
04-Sep-2024 06:12:19.170 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           17.0.12+7-LTS
04-Sep-2024 06:12:19.170 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Red Hat, Inc.
04-Sep-2024 06:12:19.170 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/share/tomcat
04-Sep-2024 06:12:19.170 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/share/tomcat
04-Sep-2024 06:12:19.208 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
04-Sep-2024 06:12:19.209 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
04-Sep-2024 06:12:19.210 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
04-Sep-2024 06:12:19.210 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
04-Sep-2024 06:12:19.210 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
04-Sep-2024 06:12:19.210 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory
04-Sep-2024 06:12:19.210 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/share/tomcat
04-Sep-2024 06:12:19.210 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/share/tomcat
04-Sep-2024 06:12:19.210 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.endorsed.dirs=
04-Sep-2024 06:12:19.210 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/var/cache/tomcat/temp
04-Sep-2024 06:12:19.210 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/share/tomcat/conf/logging.properties
04-Sep-2024 06:12:19.211 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Asked by Chris Pudney (101 rep)
Sep 4, 2024, 08:14 AM
Last activity: Sep 5, 2024, 10:22 AM