Hello,
I have observed that the Tomcat process does not shut down properly when
the RMI leak prevention is triggered. The process remains alive and
holds onto the RMI port.
I have created this sample project to demonstrate the issue:
https://github.com/leonatherton/rmi-leak-test/blob/master/src/main/java/rmi/RmiLeakTestServlet.java
There are prebuilt wars here:
https://github.com/leonatherton/rmi-leak-test/releases/tag/v0.0.0
Steps to reproduce:
1. Deploy the war (rmi-leak-test.war)
2. Trigger a shutdown
3. Observe that the process does not end, and holds on to the RMI port
(can be seen with netstat -tulpn)
This message is logged:
SEVERE [main]
org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesRmiTargets
Found RMI Target with stub class class [com.sun.proxy.$Proxy5] and value
[Proxy[MyRemote,RemoteObjectInvocationHandler[UnicastRef [liveRef:
[endpoint:[127.0.0.1:46013](local),objID:[-30127669:18b42a65f21:-7fff,
8331338290308659576]]]]]]. This RMI Target has been forcibly removed to
prevent a memory leak.
Tomcat obviously tries to tidy up, but it seems like maybe not
successfully. I am wondering if it is expected behaviour for the process
to remain alive?
Full log below.
Thanks,
Leon
NOTE: Picked up JDK_JAVA_OPTIONS:
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
18-Oct-2023 11:57:59.621 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Server version
name: Apache Tomcat/9.0.73
18-Oct-2023 11:57:59.650 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Server
built: Feb 27 2023 15:33:40 UTC
18-Oct-2023 11:57:59.650 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Server version
number: 9.0.73.0
18-Oct-2023 11:57:59.650 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log OS
Name: Linux
18-Oct-2023 11:57:59.650 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log OS
Version: 3.10.0-1160.45.1.el7.x86_64
18-Oct-2023 11:57:59.650 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log
Architecture: amd64
18-Oct-2023 11:57:59.650 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Java
Home: /usr/lib/jvm/java-11-amazon-corretto
18-Oct-2023 11:57:59.650 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log JVM
Version: 11.0.20.1+9-LTS
18-Oct-2023 11:57:59.650 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log JVM
Vendor: Amazon.com Inc.
18-Oct-2023 11:57:59.651 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log
CATALINA_BASE: /home/converter/apache-tomcat-base
18-Oct-2023 11:57:59.651 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log
CATALINA_HOME: /home/converter/apache-tomcat-9.0.73
18-Oct-2023 11:57:59.669 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: --add-opens=java.base/java.lang=ALL-UNNAMED
18-Oct-2023 11:57:59.669 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: --add-opens=java.base/java.io=ALL-UNNAMED
18-Oct-2023 11:57:59.669 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: --add-opens=java.base/java.util=ALL-UNNAMED
18-Oct-2023 11:57:59.669 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
18-Oct-2023 11:57:59.669 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
18-Oct-2023 11:57:59.669 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument:
-Djava.util.logging.config.file=/home/converter/apache-tomcat-base//conf/logging.properties
18-Oct-2023 11:57:59.670 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
18-Oct-2023 11:57:59.670 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Djdk.tls.ephemeralDHKeySize=2048
18-Oct-2023 11:57:59.670 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
18-Oct-2023 11:57:59.670 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
18-Oct-2023 11:57:59.670 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Dignore.endorsed.dirs=
18-Oct-2023 11:57:59.670 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Dcatalina.base=/home/converter/apache-tomcat-base/
18-Oct-2023 11:57:59.670 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Dcatalina.home=/home/converter/apache-tomcat
18-Oct-2023 11:57:59.670 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Djava.io.tmpdir=/home/converter/apache-tomcat-base//temp
18-Oct-2023 11:57:59.672 INFO [main]
org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The Apache
Tomcat Native library which allows using OpenSSL was not found on the
java.library.path: [/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib]
18-Oct-2023 11:58:00.555 INFO [main]
org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler
["http-nio-8080"]
18-Oct-2023 11:58:00.626 INFO [main]
org.apache.catalina.startup.Catalina.load Server initialization in
[1422] milliseconds
18-Oct-2023 11:58:00.754 INFO [main]
org.apache.catalina.core.StandardService.startInternal Starting service
[Catalina]
18-Oct-2023 11:58:00.754 INFO [main]
org.apache.catalina.core.StandardEngine.startInternal Starting Servlet
engine: [Apache Tomcat/9.0.73]
18-Oct-2023 11:58:00.757 SEVERE [main]
org.apache.catalina.startup.HostConfig.beforeStart Unable to create
directory for deployment:
[/home/converter/apache-tomcat-base/conf/Catalina/localhost]
18-Oct-2023 11:58:00.784 INFO [main]
org.apache.catalina.startup.HostConfig.deployWAR Deploying web
application archive
[/home/converter/apache-tomcat-base/webapps/rmi-leak-test.war]
18-Oct-2023 11:58:01.483 INFO [main] rmi.RmiLeakTestServlet.init Init
leak test
18-Oct-2023 11:58:01.561 INFO [main]
org.apache.catalina.startup.HostConfig.deployWAR Deployment of web
application archive
[/home/converter/apache-tomcat-base/webapps/rmi-leak-test.war] has
finished in [776] ms
18-Oct-2023 11:58:01.594 INFO [main]
org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler
["http-nio-8080"]
18-Oct-2023 11:58:01.651 INFO [main]
org.apache.catalina.startup.Catalina.start Server startup in [1025]
milliseconds
18-Oct-2023 11:58:09.825 INFO [main]
org.apache.catalina.core.StandardServer.await A valid shutdown command
was received via the shutdown port. Stopping the Server instance.
18-Oct-2023 11:58:09.826 INFO [main]
org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler
["http-nio-8080"]
18-Oct-2023 11:58:09.843 INFO [main]
org.apache.catalina.core.StandardService.stopInternal Stopping service
[Catalina]
18-Oct-2023 11:58:09.844 INFO [main] rmi.RmiLeakTestServlet.destroy
Destroy leak test
18-Oct-2023 11:58:09.964 SEVERE [main]
org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesRmiTargets
Found RMI Target with stub class class [com.sun.proxy.$Proxy5] and value
[Proxy[MyRemote,RemoteObjectInvocationHandler[UnicastRef [liveRef:
[endpoint:[127.0.0.1:46013](local),objID:[-30127669:18b42a65f21:-7fff,
8331338290308659576]]]]]]. This RMI Target has been forcibly removed to
prevent a memory leak.
18-Oct-2023 11:58:09.966 INFO [main]
org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler
["http-nio-8080"]
18-Oct-2023 11:58:09.979 INFO [main]
org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler
["http-nio-8080"]
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org