[ 
https://issues.apache.org/jira/browse/LOG4J2-3479?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rupesh updated LOG4J2-3479:
---------------------------
     Attachment: image-2022-04-18-10-38-39-889.png
    Description: 
While calling logger.error(ex.getMessage(),ex) causing *stackoverflow and 
java.lang.OutOfMemoryError: Java heap space* with repeatative call of following 
stacktrace. it is happening randomly on our application. *Log4j2 version is 
2.17.0*
{code:java}
 at 
org.apache.logging.log4j.spi.AbstractLogger.handleLogMessageException(Ljava/lang/Throwable;Ljava/lang/String;Lorg/apache/logging/log4j/message/Message;)V
 (AbstractLogger.java:2225)
  at 
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(Ljava/lang/String;Ljava/lang/StackTraceElement;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2208)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2159)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2142)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logMessage(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
 (AbstractLogger.java:2058)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
 (AbstractLogger.java:1931)
  at 
org.apache.logging.log4j.spi.AbstractLogger.warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
 (AbstractLogger.java:2805)
  at 
org.apache.logging.log4j.spi.AbstractLogger.handleLogMessageException(Ljava/lang/Throwable;Ljava/lang/String;Lorg/apache/logging/log4j/message/Message;)V
 (AbstractLogger.java:2225)
  at 
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(Ljava/lang/String;Ljava/lang/StackTraceElement;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2208)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2159)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2142)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logMessage(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2017)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V
 (AbstractLogger.java:1983) {code}
Lo4j2.xml configuration file
{code:java}
<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config";
               packages="custom.appender">
    <Appenders>
        <Routing name="CustomRouting">
            <Routes pattern="${sys:pathToLogfile}">
                <Route>
                    <CustomRollingRandomAccessFile name="FILE"
                        fileName="${sys:pathToLogfile}/${date:yyyy-MM-dd}.log"
                        filePattern="${sys:pathToLogfile}/%d{yyyy-MM-dd}.log.gz"
                        immediateFlush="true" append="true">
                        <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss 
zzz} | [%t] %C{2} (%F:%L) - %m | %X%n" />
                        <Policies>
                            <TimeBasedTriggeringPolicy interval="1" 
modulate="true" />
                        </Policies>
                        <DefaultRolloverStrategy>
                            <Delete basePath="${sys:pathToLogfile}">
                                <IfFileName glob="//*.log.gz" />
                                <IfLastModified age="60d" />
                            </Delete>
                        </DefaultRolloverStrategy>
                    </CustomRollingRandomAccessFile>
                </Route>
            </Routes>
        </Routing>      
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss zzz} [%t] 
%C{2} (%F:%L) - %m | %X%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Root level="ERROR" includeLocation="true" >            
            <AppenderRef ref="CustomRouting">
                <ThreadContextMapFilter onMatch="DENY" onMismatch="ACCEPT">
                    <KeyValuePair key="Dir" value="customval" />
                </ThreadContextMapFilter>
            </AppenderRef>
        </Root>
    </Loggers>
</Configuration> {code}
Here is heap dump snapshot for the same which shows StatusMessage object's 
retained heap size.

!image-2022-04-18-10-38-39-889.png!

  was:
While calling logger.error(ex.getMessage(),ex) causing *stackoverflow and 
java.lang.OutOfMemoryError: Java heap space* with repeatative call of following 
stacktrace. it is happening randomly on our application. *Log4j2 version is 
2.17.0*
{code:java}
 at 
org.apache.logging.log4j.spi.AbstractLogger.handleLogMessageException(Ljava/lang/Throwable;Ljava/lang/String;Lorg/apache/logging/log4j/message/Message;)V
 (AbstractLogger.java:2225)
  at 
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(Ljava/lang/String;Ljava/lang/StackTraceElement;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2208)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2159)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2142)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logMessage(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
 (AbstractLogger.java:2058)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
 (AbstractLogger.java:1931)
  at 
org.apache.logging.log4j.spi.AbstractLogger.warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
 (AbstractLogger.java:2805)
  at 
org.apache.logging.log4j.spi.AbstractLogger.handleLogMessageException(Ljava/lang/Throwable;Ljava/lang/String;Lorg/apache/logging/log4j/message/Message;)V
 (AbstractLogger.java:2225)
  at 
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(Ljava/lang/String;Ljava/lang/StackTraceElement;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2208)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2159)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2142)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logMessage(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V
 (AbstractLogger.java:2017)
  at 
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V
 (AbstractLogger.java:1983) {code}
Lo4j2.xml configuration file
{code:java}
<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config";
               packages="custom.appender">
    <Appenders>
        <Routing name="CustomRouting">
            <Routes pattern="${sys:pathToLogfile}">
                <Route>
                    <CustomRollingRandomAccessFile name="FILE"
                        fileName="${sys:pathToLogfile}/${date:yyyy-MM-dd}.log"
                        filePattern="${sys:pathToLogfile}/%d{yyyy-MM-dd}.log.gz"
                        immediateFlush="true" append="true">
                        <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss 
zzz} | [%t] %C{2} (%F:%L) - %m | %X%n" />
                        <Policies>
                            <TimeBasedTriggeringPolicy interval="1" 
modulate="true" />
                        </Policies>
                        <DefaultRolloverStrategy>
                            <Delete basePath="${sys:pathToLogfile}">
                                <IfFileName glob="//*.log.gz" />
                                <IfLastModified age="60d" />
                            </Delete>
                        </DefaultRolloverStrategy>
                    </CustomRollingRandomAccessFile>
                </Route>
            </Routes>
        </Routing>      
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss zzz} [%t] 
%C{2} (%F:%L) - %m | %X%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Root level="ERROR" includeLocation="true" >            
            <AppenderRef ref="CustomRouting">
                <ThreadContextMapFilter onMatch="DENY" onMismatch="ACCEPT">
                    <KeyValuePair key="Dir" value="customval" />
                </ThreadContextMapFilter>
            </AppenderRef>
        </Root>
    </Loggers>
</Configuration> {code}


> While calling logger.error(ex.getMessage(),ex) causing stackoverflow and 
> java.lang.OutOfMemoryError: Java heap space with repetitive call of following 
> stacktrace. 
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: LOG4J2-3479
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-3479
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Log4j-to-SLF4J
>    Affects Versions: 2.17.0
>         Environment: OpenJDK 64-Bit 1.8.0_241
> Apache Tomcat 8.5.51
> Operating System: Linux Cent OS 2.6.32-754.33.1.el6.centos.plus.x86_64, 
> 2.6.32-754.33.1.el6.x86_64
>            Reporter: Rupesh
>            Priority: Critical
>         Attachments: image-2022-04-18-10-38-39-889.png
>
>
> While calling logger.error(ex.getMessage(),ex) causing *stackoverflow and 
> java.lang.OutOfMemoryError: Java heap space* with repeatative call of 
> following stacktrace. it is happening randomly on our application. *Log4j2 
> version is 2.17.0*
> {code:java}
>  at 
> org.apache.logging.log4j.spi.AbstractLogger.handleLogMessageException(Ljava/lang/Throwable;Ljava/lang/String;Lorg/apache/logging/log4j/message/Message;)V
>  (AbstractLogger.java:2225)
>   at 
> org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(Ljava/lang/String;Ljava/lang/StackTraceElement;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
>  (AbstractLogger.java:2208)
>   at 
> org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
>  (AbstractLogger.java:2159)
>   at 
> org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
>  (AbstractLogger.java:2142)
>   at 
> org.apache.logging.log4j.spi.AbstractLogger.logMessage(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
>  (AbstractLogger.java:2058)
>   at 
> org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
>  (AbstractLogger.java:1931)
>   at 
> org.apache.logging.log4j.spi.AbstractLogger.warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
>  (AbstractLogger.java:2805)
>   at 
> org.apache.logging.log4j.spi.AbstractLogger.handleLogMessageException(Ljava/lang/Throwable;Ljava/lang/String;Lorg/apache/logging/log4j/message/Message;)V
>  (AbstractLogger.java:2225)
>   at 
> org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(Ljava/lang/String;Ljava/lang/StackTraceElement;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
>  (AbstractLogger.java:2208)
>   at 
> org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
>  (AbstractLogger.java:2159)
>   at 
> org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
>  (AbstractLogger.java:2142)
>   at 
> org.apache.logging.log4j.spi.AbstractLogger.logMessage(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V
>  (AbstractLogger.java:2017)
>   at 
> org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Ljava/lang/Throwable;)V
>  (AbstractLogger.java:1983) {code}
> Lo4j2.xml configuration file
> {code:java}
> <?xml version="1.0" encoding="UTF-8"?>
> <Configuration xmlns="http://logging.apache.org/log4j/2.0/config";
>                packages="custom.appender">
>     <Appenders>
>         <Routing name="CustomRouting">
>             <Routes pattern="${sys:pathToLogfile}">
>                 <Route>
>                     <CustomRollingRandomAccessFile name="FILE"
>                         fileName="${sys:pathToLogfile}/${date:yyyy-MM-dd}.log"
>                         
> filePattern="${sys:pathToLogfile}/%d{yyyy-MM-dd}.log.gz"
>                         immediateFlush="true" append="true">
>                         <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss 
> zzz} | [%t] %C{2} (%F:%L) - %m | %X%n" />
>                         <Policies>
>                             <TimeBasedTriggeringPolicy interval="1" 
> modulate="true" />
>                         </Policies>
>                         <DefaultRolloverStrategy>
>                             <Delete basePath="${sys:pathToLogfile}">
>                                 <IfFileName glob="//*.log.gz" />
>                                 <IfLastModified age="60d" />
>                             </Delete>
>                         </DefaultRolloverStrategy>
>                     </CustomRollingRandomAccessFile>
>                 </Route>
>             </Routes>
>         </Routing>      
>         <Console name="STDOUT" target="SYSTEM_OUT">
>             <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss zzz} [%t] 
> %C{2} (%F:%L) - %m | %X%n" />
>         </Console>
>     </Appenders>
>     <Loggers>
>         <Root level="ERROR" includeLocation="true" >            
>             <AppenderRef ref="CustomRouting">
>                 <ThreadContextMapFilter onMatch="DENY" onMismatch="ACCEPT">
>                     <KeyValuePair key="Dir" value="customval" />
>                 </ThreadContextMapFilter>
>             </AppenderRef>
>         </Root>
>     </Loggers>
> </Configuration> {code}
> Here is heap dump snapshot for the same which shows StatusMessage object's 
> retained heap size.
> !image-2022-04-18-10-38-39-889.png!



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to