Anton Ermolenko created SUREFIRE-1818: -----------------------------------------
Summary: Surefire buffers los messages in memory instead of printing them out to the terminal which leads to OOM error. Key: SUREFIRE-1818 URL: https://issues.apache.org/jira/browse/SUREFIRE-1818 Project: Maven Surefire Issue Type: Bug Affects Versions: 2.22.1 Reporter: Anton Ermolenko Attachments: image-2020-07-11-18-57-41-164.png For unknown reason when running tests Surefire version 2.22.1 buffers logging messages in memory in {{ConcurrentLinkedQueue}} which leads to OutOfMemoryError when amount of logging messages is sufficiently large. If amount of memory is big enough to hold those messages, Surefire will print those log messages after running the tests. Downgrading to 2.18.1 resolves the issue and log messages appear on the terminal without delay. While it's printing those messages the following stack trace can be observed: {code:java} "main" #1 prio=5 os_prio=0 tid=0x00007f3ff400b000 nid=0x30adf runnable [0x00007f3ffb3d7000] java.lang.Thread.State: RUNNABLE at java.io.FileOutputStream.writeBytes(Native Method) at java.io.FileOutputStream.write(FileOutputStream.java:326) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) - locked <0x00000005cc251490> (a java.io.BufferedOutputStream) at java.io.PrintStream.write(PrintStream.java:482) - locked <0x00000005cc251470> (a java.io.PrintStream) at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221) at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291) at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:104) - locked <0x00000005cc2515b0> (a java.io.OutputStreamWriter) at java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:185) at java.io.PrintStream.write(PrintStream.java:527) - locked <0x00000005cc251470> (a java.io.PrintStream) at java.io.PrintStream.print(PrintStream.java:583) at org.fusesource.jansi.FilterPrintStream.write(FilterPrintStream.java:99) at org.fusesource.jansi.FilterPrintStream.write(FilterPrintStream.java:107) at org.fusesource.jansi.FilterPrintStream.print(FilterPrintStream.java:156) at org.fusesource.jansi.FilterPrintStream.println(FilterPrintStream.java:231) - locked <0x00000005cc22b6d0> (a org.fusesource.jansi.AnsiConsole$2) at org.slf4j.impl.SimpleLogger.write(SimpleLogger.java:318) at org.slf4j.impl.SimpleLogger.log(SimpleLogger.java:295) at org.slf4j.impl.SimpleLogger.warn(SimpleLogger.java:522) at org.apache.maven.cli.logging.Slf4jLogger.warn(Slf4jLogger.java:74) at org.apache.maven.plugin.surefire.log.PluginConsoleLogger.warning(PluginConsoleLogger.java:92) at org.apache.maven.plugin.surefire.booterclient.ForkStarter$CloseableCloser.run(ForkStarter.java:203) at org.apache.maven.surefire.shade.org.apache.maven.shared.utils.cli.CommandLineUtils$1.call(CommandLineUtils.java:282) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:614) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:282) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1183) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1011) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:857) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:954) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) at org.apache.maven.cli.MavenCli.main(MavenCli.java:192) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) {code} Dominator tree of produced heap dump: !image-2020-07-11-18-57-41-164.png|width=581,height=86! Heap dump can be downloaded [here|https://drive.google.com/file/d/1LL2ZRmUmIb708HUFC1wNfeRDMOtIwKWz/view?usp=sharing] -- This message was sent by Atlassian Jira (v8.3.4#803005)