Guacamole suddenly not working

Hi everybody,

Ns7 setup here with Guacamole working absolutely fine for about ~3y.
As of today, when a user tries to connect to a host, this simply results in the standard loading message followed by the “You’ve been disconnected” message.
Any clue of what the problem could be?

In /opt/tomcat8/logs/localhost.2023-06-07.log I have

07-Jun-2023 14:06:50.990 SEVERE [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.core.StandardContext.listenerStop Exception sending context destroyed event to listener instance of class [org.apache.guacamole.GuacamoleServletContextListener]
	java.lang.IllegalStateException: java.io.FileNotFoundException: /opt/tomcat8/webapps/guacamole/WEB-INF/lib/jsr250-api-1.0.jar (No such file or directory)
		at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.getArchiveEntry(AbstractSingleArchiveResourceSet.java:100)
		at org.apache.catalina.webresources.AbstractArchiveResourceSet.getResource(AbstractArchiveResourceSet.java:257)
		at org.apache.catalina.webresources.StandardRoot.getResourceInternal(StandardRoot.java:280)
		at org.apache.catalina.webresources.Cache.getResource(Cache.java:62)
		at org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:215)
		at org.apache.catalina.webresources.StandardRoot.getClassLoaderResource(StandardRoot.java:224)
		at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2311)
		at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:855)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1327)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180)
		at com.google.common.collect.Lists.reverse(Lists.java:815)
		at org.apache.guacamole.GuacamoleServletContextListener.contextDestroyed(GuacamoleServletContextListener.java:247)
		at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4735)
		at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5399)
		at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
		at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:834)
		at org.apache.catalina.startup.HostConfig.undeploy(HostConfig.java:1417)
		at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1344)
		at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1603)
		at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:304)
		at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
		at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1159)
		at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)
		at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1385)
		at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1353)
		at java.lang.Thread.run(Thread.java:750)
	Caused by: java.io.FileNotFoundException: /opt/tomcat8/webapps/guacamole/WEB-INF/lib/jsr250-api-1.0.jar (No such file or directory)
		at java.util.zip.ZipFile.open(Native Method)
		at java.util.zip.ZipFile.<init>(ZipFile.java:231)
		at java.util.zip.ZipFile.<init>(ZipFile.java:157)
		at java.util.jar.JarFile.<init>(JarFile.java:171)
		at java.util.jar.JarFile.<init>(JarFile.java:135)
		at org.apache.tomcat.util.compat.JreCompat.jarFileNewInstance(JreCompat.java:202)
		at org.apache.tomcat.util.compat.JreCompat.jarFileNewInstance(JreCompat.java:187)
		at org.apache.catalina.webresources.AbstractArchiveResourceSet.openJarFile(AbstractArchiveResourceSet.java:308)
		at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.getArchiveEntry(AbstractSingleArchiveResourceSet.java:96)

but the file exists…

# ls -l /opt/tomcat8/webapps/guacamole/WEB-INF/lib/jsr250-api-1.0.jar
-rw-r----- 1 tomcat tomcat 5848 Oct 10  2022 /opt/tomcat8/webapps/guacamole/WEB-INF/lib/jsr250-api-1.0.jar

Polite-ping to the maintainer @mrmarkuz also to know if there was any update upstream.

Thank you in advance!

I updated nethserver-guacamole recently to provide Guacamole 1.5.0.
Which version do you use?

rpm -qa nethserver-guacamole

EDIT:

If you have updated to nethserver-guacamole-0.0.1-7 you may try a downgrade:

yum downgrade nethserver-guacamole

EDIT2:

I can’t reproduce the “FileNotFound” errors.
Do you also get the segfault error in /var/log/messages as explained here?

guacd[19074]: segfault at 0 ip 00007eff00efba54 sp 00007efeee813718 error 6 in libc-2.17.so[7eff00e6c000+1c4000]

2 Likes

Hi Markus,
yes, I’m currently on nethserver-guacamole-0.0.1-7.ns7.noarch .
Tried downgrading and signal-event nethserver-guacamole-update but nothing changed.
It affects all hosts registered and with other RDP client works so it’s certainly a Guacamole problem. Now upgrading again to the latest version…

1 Like

You could also try the 1.5.1 version:

yum install https://mrmarkuz.dynu.net/mirror/devtest/nethserver-guacamole-0.0.1-8.ns7.noarch.rpm

I’m going to compile and test the latest Guacamole 1.5.2.

EDIT:

Unfortunately same error with most recent Guacamole 1.5.2.
I’m going to troubleshoot, I suspect guacd from the epel repo…

1 Like

@mrmarkuz
I tested guacamole 1.5.1, still the same segfault error. I also suspect guacd from epel repo as my problems started after updating that (see my topicstart).

1 Like

Hi, yes, same segfault in my logs. You want me to try the update to 1.5.1?

1 Like

No, thanks, I already tried 1.5.1 and 1.5.2 and they don’t work. It seems the problem is about guacd provided by epel.

To install the most recent Guacamole module 1.5.2 (alpha):

yum install https://mrmarkuz.dynu.net/mirror/devtest/nethserver-guacamole-0.0.1-9.ns7.noarch.rpm

2 Likes

Tried. Same segfault, same behaviour.

1 Like

@mmaridev @ftimmers I found that epel provides a working guacd 1.5.2-2 in the epel-testing repo.

After executing

yum update guacd --enablerepo=epel-testing

Guacamole should work again.

Please also test the current Guacamole 1.5.2 (release notes):

yum install https://mrmarkuz.dynu.net/mirror/devtest/nethserver-guacamole-0.0.1-9.ns7.noarch.rpm

3 Likes

@mrmarkuz
I can confirm this is working. The segfault error disappeared.
Many thanks!

2 Likes

@mrmarkuz another positive test here.
Through all tests, my rpm always got stuck on Verifying when installing the nethserver-guacamole. I press CTRL+C after a while (many minutes) and works fine. Fine with other packages.
Anyway, Guacamole works absolutely fine again.

1 Like

I’m glad that it works again.

Are there errors in /var/log/messages ?

Tomcat, fail2ban and shorewall are restarted after verifying and the database is updated, it can take some time but should finish. I can’t reproduce on my machines.

3 Likes

Aha, yes, it’s indeed probably due to the fact I’m connected over VPN. Thank you @mrmarkuz <3

1 Like