You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Anton Ermolenko (Jira)" <ji...@apache.org> on 2020/07/11 09:28:00 UTC

[jira] [Created] (SUREFIRE-1818) Surefire buffers los messages in memory instead of printing them out to the terminal which leads to OOM error.

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)