You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Remko Popma (JIRA)" <ji...@apache.org> on 2015/10/21 17:19:27 UTC

[jira] [Comment Edited] (LOG4J2-1159) ThreadLocal leaks in Tomcat8 (even if Async Loggers are not used)

    [ https://issues.apache.org/jira/browse/LOG4J2-1159?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14967292#comment-14967292 ] 

Remko Popma edited comment on LOG4J2-1159 at 10/21/15 3:18 PM:
---------------------------------------------------------------

Limiting the scope of this issue to just the memory leak warnings generated by Tomcat when Async Loggers are not used.

Fixed in commits 08790751 and bf3ba25dfe:
removed static initializer from AsyncLogger class, so that calling a static method on AsyncLogger will no longer initialize and start up the Disruptor and associated thread.

Fixed in master.
Please verify and close.


was (Author: remkop@yahoo.com):
Limiting the scope of this issue to just the memory leak warnings generated by Tomcat when Async Loggers are not used.

Fixed in commits 08790751 and bf3ba25dfe:
removed static initializer from AsyncLogger class, so that calling a static method on AsyncLogger will no longer initialize and start up the Disruptor and associated thread.

> ThreadLocal leaks in Tomcat8 (even if Async Loggers are not used)
> -----------------------------------------------------------------
>
>                 Key: LOG4J2-1159
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1159
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.4, 2.4.1
>            Reporter: Robin Jansohn
>            Assignee: Remko Popma
>             Fix For: 2.5
>
>
> Since v2.4 there a TreadLocal warnings reported by Tomcat. This happens even when the application is not configured to use Async Loggers.
> A minimal webapp to reproduce can be found here: https://github.com/jansohn/log4j2-threadlocal
> {noformat}
> WARNUNG: The web application [log4j2webapp] appears to have started a thread named [AsyncLogger-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
>  sun.misc.Unsafe.park(Native Method)
>  java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
>  java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
>  com.lmax.disruptor.BlockingWaitStrategy.waitFor(BlockingWaitStrategy.java:45)
>  com.lmax.disruptor.ProcessingSequenceBarrier.waitFor(ProcessingSequenceBarrier.java:55)
>  com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:123)
>  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>  java.lang.Thread.run(Thread.java:745)
> Okt 14, 2015 1:06:48 PM org.apache.catalina.loader.WebappClassLoaderBase checkThreadLocalMapForLeaks
> SCHWERWIEGEND: The web application [log4j2webapp] created a ThreadLocal with key of type [org.apache.logging.log4j.core.async.AsyncLogger$Info$1] (value [org.apache.logging.log4j.core.async.AsyncLogger$Info$1@1d29f54]) and a value of type [org.apache.logging.log4j.core.async.AsyncLogger.Info] (value [org.apache.logging.log4j.core.async.AsyncLogger$Info@1ea59ba]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org