Bug 65940 - DefaultInstanceManager.destroyInstance can lead to a NullPointerException
Summary: DefaultInstanceManager.destroyInstance can lead to a NullPointerException
Status: RESOLVED FIXED
Alias: None
Product: Tomcat 9
Classification: Unclassified
Component: Catalina (show other bugs)
Version: 9.0.55
Hardware: PC Linux
: P2 normal (vote)
Target Milestone: -----
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-03-07 21:32 UTC by Réda Housni Alaoui
Modified: 2022-03-09 09:48 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Réda Housni Alaoui 2022-03-07 21:32:53 UTC
On our Tomcat instance, we noticed the following stack trace:



19:46:49.556 [Catalina-utility-12] [ - ] ERROR o.a.catalina.core.StandardWrapper - InstanceManager.destroy() pour le Servlet [AtmosphereServlet] a renvoyé une exception
java.lang.NullPointerException: null
        at org.apache.catalina.core.DefaultInstanceManager.destroyInstance(DefaultInstanceManager.java:196)
        at org.apache.catalina.core.StandardWrapper.unload(StandardWrapper.java:1343)
        at org.apache.catalina.core.StandardWrapper.stopInternal(StandardWrapper.java:1627)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
        at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5465)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
        at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3811)
        at org.apache.catalina.startup.HostConfig.reload(HostConfig.java:1443)
        at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1415)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1654)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:315)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
        at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1162)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1365)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1369)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1347)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Thread.java:829)


https://github.com/apache/tomcat/blob/662cc9171c22ac790532d38a2b59990faaa7b971/java/org/apache/catalina/core/DefaultInstanceManager.java#L196 gives this :

    @Override
    public void destroyInstance(Object instance) throws IllegalAccessException,
            InvocationTargetException {
        if (!ignoreAnnotations) {
            preDestroy(instance, instance.getClass()); // NPE on this line
        }
    }

So I guess parameter "instance" is null here.
Comment 1 Mark Thomas 2022-03-09 09:27:26 UTC
Thanks for the report.

Fixed in:
- 10.1.x for 10.1.0-M12 onwards
- 10.0.x for 10.0.18 onwards
- 9.0.x for 9.0.60 onwards
- 8.5.x for 8.5.77 onwards
Comment 2 Réda Housni Alaoui 2022-03-09 09:48:01 UTC
Thank you !