Uploaded image for project: 'Log4j 2'
  1. Log4j 2
  2. LOG4J2-819

PermGen OutOfMemoryError when reloading webapp on Tomcat 6

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • 2.0.2
    • 2.1
    • Core
    • None
    • Tomcat 6

    Description

      When reloading an application 3 or 4 times in Tomcat 6, the application crashes with a "java.lang.OutOfMemoryError: PermGen space" exception.

      After some investigation using the "When all else fails" section of https://wiki.apache.org/tomcat/OutOfMemory in conjunction with Java VisualVM, I have narrowed down the problem to the Thread created within org.apache.logging.log4j.core.util.CoarseCachedClock.

      When a Thread is created, it contains a reference to the classloader that it was created with. In this case, the Thread's contextClassLoader field contains a reference to the WebappClassLoader. When Tomcat attempts to unload the webapp, the Thread still holds onto this reference which prevents WebappClassLoader from being freed.

      Perhaps the Log4jServletContextListener (Log4jWebInitializerImpl) can be made to stop the CoarseCachedClock thread.

      I believe this is not an obvious issue on Tomcat 7 due to https://wiki.apache.org/tomcat/MemoryLeakProtection.

      Attachments

        1. demo.zip
          12 kB
          Costa Theodosiou
        2. demorun.zip
          15 kB
          Ralph Goers
        3. demorun-tomcat6-with-reload.zip
          33 kB
          Costa Theodosiou
        4. gg-log4j2-clocks-interrupts.patch
          19 kB
          Gary D. Gregory
        5. gg-log4j2-clocks-v2.patch
          18 kB
          Gary D. Gregory

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            costat Costa Theodosiou
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment