You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by Sergii Volokh <se...@gmail.com> on 2017/04/28 16:05:49 UTC

Fwd: Log4j2: Stack overflow error after logging configuration with java api

Hi Guys!

I have some logging configuration staff using java api.
And migrating from log4j2 v2.2 to v2.8.2, I've got StackOverflowError
inside of Log4j logger.
The problem was finally resolved with configuration logic correction, but
it still seems to be a reason to fix something inside of Log4j to prevent
such cases.
Here is a simplified test code, which lead to the exception.

>>>>>
    @Test
    public void test1() throws FileNotFoundException, IOException {
        XmlConfiguration conf = new XmlConfiguration(
                LoggerContext.getContext(),
                new ConfigurationSource(new FileInputStream(
                        new File("log4j2.xml"))));

        ((LoggerContext) LogManager.getContext(false)).start(conf);

        Logger log = (Logger) LogManager.getLogger();
        log.getContext().start(conf);

        log.info("Hello world");
    }
<<<<<

This code is not fully correct, but it does not look like a criminal. So,
its not good that log4j fails on this.

Thanks.
-- 
WBR, Sergii

Re: Log4j2: Stack overflow error after logging configuration with java api

Posted by Sergii Volokh <se...@gmail.com>.
Hi Gary!

Unfortunately, I do not have access to the environment for now.
But I do remember the place.
It was a single step stack strace cycle in
"org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy",
line 97.
Following method recursively calls itself (the same object instance):
>>>>>>>
    public LoggerConfig getActiveLoggerConfig(final Supplier<LoggerConfig>
next) {
        LoggerConfig result = this.loggerConfig;
        if (!beforeLogEvent()) {
            result = next.get();
            return
result.getReliabilityStrategy().getActiveLoggerConfig(next);
        }
        return result;
    }
<<<<<<<

Thanks.
WBR, Sergey


2017-04-28 21:06 GMT+03:00 Gary Gregory <ga...@gmail.com>:

> Hi,
>
> Can you post a bit of the stack trace?
>
> Gary
>
> On Fri, Apr 28, 2017 at 9:05 AM, Sergii Volokh <se...@gmail.com>
> wrote:
>
> > Hi Guys!
> >
> > I have some logging configuration staff using java api.
> > And migrating from log4j2 v2.2 to v2.8.2, I've got StackOverflowError
> > inside of Log4j logger.
> > The problem was finally resolved with configuration logic correction, but
> > it still seems to be a reason to fix something inside of Log4j to prevent
> > such cases.
> > Here is a simplified test code, which lead to the exception.
> >
> > >>>>>
> >     @Test
> >     public void test1() throws FileNotFoundException, IOException {
> >         XmlConfiguration conf = new XmlConfiguration(
> >                 LoggerContext.getContext(),
> >                 new ConfigurationSource(new FileInputStream(
> >                         new File("log4j2.xml"))));
> >
> >         ((LoggerContext) LogManager.getContext(false)).start(conf);
> >
> >         Logger log = (Logger) LogManager.getLogger();
> >         log.getContext().start(conf);
> >
> >         log.info("Hello world");
> >     }
> > <<<<<
> >
> > This code is not fully correct, but it does not look like a criminal. So,
> > its not good that log4j fails on this.
> >
> > Thanks.
> > --
> > WBR, Sergii
> >
>
>
>
> --
> E-Mail: garydgregory@gmail.com | ggregory@apache.org
> Java Persistence with Hibernate, Second Edition
> <https://www.amazon.com/gp/product/1617290459/ref=as_li_
> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&
> linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8>
>
> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=
> 1617290459>
> JUnit in Action, Second Edition
> <https://www.amazon.com/gp/product/1935182021/ref=as_li_
> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&
> linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22
> >
>
> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=
> 1935182021>
> Spring Batch in Action
> <https://www.amazon.com/gp/product/1935182951/ref=as_li_
> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&
> linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%
> 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action>
> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=
> 1935182951>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>



-- 
WBR, Sergii

Re: Log4j2: Stack overflow error after logging configuration with java api

Posted by Gary Gregory <ga...@gmail.com>.
Hi,

Can you post a bit of the stack trace?

Gary

On Fri, Apr 28, 2017 at 9:05 AM, Sergii Volokh <se...@gmail.com>
wrote:

> Hi Guys!
>
> I have some logging configuration staff using java api.
> And migrating from log4j2 v2.2 to v2.8.2, I've got StackOverflowError
> inside of Log4j logger.
> The problem was finally resolved with configuration logic correction, but
> it still seems to be a reason to fix something inside of Log4j to prevent
> such cases.
> Here is a simplified test code, which lead to the exception.
>
> >>>>>
>     @Test
>     public void test1() throws FileNotFoundException, IOException {
>         XmlConfiguration conf = new XmlConfiguration(
>                 LoggerContext.getContext(),
>                 new ConfigurationSource(new FileInputStream(
>                         new File("log4j2.xml"))));
>
>         ((LoggerContext) LogManager.getContext(false)).start(conf);
>
>         Logger log = (Logger) LogManager.getLogger();
>         log.getContext().start(conf);
>
>         log.info("Hello world");
>     }
> <<<<<
>
> This code is not fully correct, but it does not look like a criminal. So,
> its not good that log4j fails on this.
>
> Thanks.
> --
> WBR, Sergii
>



-- 
E-Mail: garydgregory@gmail.com | ggregory@apache.org
Java Persistence with Hibernate, Second Edition
<https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8>

<http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459>
JUnit in Action, Second Edition
<https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22>

<http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021>
Spring Batch in Action
<https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action>
<http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory