Receive this exception occasionally when shutting down tomcat when webapp has left RMI objects in memory. Does not always happen. Similar to issue 31334, but different stack. 21-Feb-2018 02:05:58.192 SEVERE [Catalina-startStop-2] org.apache.catalina.core.ContainerBase.stopInternal A child container failed during stop java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to stop component [WebappLoader[StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]] at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:1003) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257) at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1441) at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1430) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.apache.catalina.LifecycleException: Failed to stop component [WebappLoader[StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]] at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:267) at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5363) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257) at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1441) at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1430) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:997) ... 7 more Caused by: java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode(HashMap.java:1437) at java.util.HashMap$ValueIterator.next(HashMap.java:1466) at org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesRmiTargets(WebappClassLoaderBase.java:2081) at org.apache.catalina.loader.WebappClassLoaderBase.clearReferences(WebappClassLoaderBase.java:1521) at org.apache.catalina.loader.WebappClassLoaderBase.stop(WebappClassLoaderBase.java:1463) at org.apache.catalina.loader.WebappLoader.stopInternal(WebappLoader.java:443) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257) ... 15 more 21-Feb-2018 02:05:58.193 SEVERE [Thread-115] org.apache.catalina.core.ContainerBase.stopInternal A child container failed during stop java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: A child container failed during stop at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:1003) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257) at org.apache.catalina.core.StandardService.stopInternal(StandardService.java:471) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257) at org.apache.catalina.core.StandardServer.stopInternal(StandardServer.java:791) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257) at org.apache.catalina.startup.Catalina.stop(Catalina.java:744) at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:845) Caused by: org.apache.catalina.LifecycleException: A child container failed during stop at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:1011) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257) at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1441) at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1430) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 21-Feb-2018 02:05:58.195 SEVERE [Thread-115] org.apache.catalina.startup.Catalina.stop Catalina.stop org.apache.catalina.LifecycleException: A child container failed during stop at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:1011) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257) at org.apache.catalina.core.StandardService.stopInternal(StandardService.java:471) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257) at org.apache.catalina.core.StandardServer.stopInternal(StandardServer.java:791) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257) at org.apache.catalina.startup.Catalina.stop(Catalina.java:744) at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:845)
Thanks for the report. That Map has a dedicated lock object. I've updated the clean-up code to use it. Fixed in: - trunk for 9.0.6 onwards - 8.5.x for 8.5.29 onwards - 8.0.x for 8.0.51 onwards - 7.0.x for 7.0.86 onwards