Docker-> Maven-> Failsafe-> Surefire启动fork失败,并且“分叉虚拟机终止,没有正确地说再见。虚拟机崩溃或System.exit被调用?”

问题描述:

按照标题:我试图从集装箱化的詹金斯奴隶运行Maven自动化测试,并且在与此战斗一周后,现在我已经没有想法了。它在具有4G内存的AWS实例上工作,但在不受限制(在RAM和CPU)容器上,它会失败,并显示如下错误。唯一的情况是,当我禁用分支Failsafe插件,但这不是一个选项。Docker-> Maven-> Failsafe-> Surefire启动fork失败,并且“分叉虚拟机终止,没有正确地说再见。虚拟机崩溃或System.exit被调用?”

我尝试了各种可以使用Google但没有运气的Java/Maven/Failsafe/Surefire选项(如添加全局Java -Xmx选项以及每个插件在pom.xml中)。

有没有人像这样成功地运行它?

看起来这应该更容易处理,但如果我有任何问题,我会从头上拉出所有头发。我仍然不喜欢承认失败的想法。请帮忙!

这些插件失败后创建转储:

故障安全-summary.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<failsafe-summary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-sure 
fire-plugin/xsd/failsafe-summary.xsd" result="254" timeout="false"> 
    <completed>0</completed> 
    <errors>0</errors> 
    <failures>0</failures> 
    <skipped>0</skipped> 
    <failureMessage>org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goodbye. VM cras 
h or System.exit called? 
Command was /bin/sh -c cd /var/lib/jenkins/workspace/ui_acceptance_test_chrome_docker_freestyle &amp;&amp; /usr/lib/jvm/java-1.8-openjdk/jre/bin/ja 
va -Dfile.encoding=UTF-8 -jar /var/lib/jenkins/workspace/ui_acceptance_test_chrome_docker_freestyle/target/surefire/surefirebooter81206735832436906 
05.jar /var/lib/jenkins/workspace/ui_acceptance_test_chrome_docker_freestyle/target/surefire 2017-10-10T15-02-35_189-jvmRun1 surefire59539140137458 
58339tmp surefire_03559885505222114015tmp 
Error occurred in starting fork, check output in log 
Process Exit Code: 1 
     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:686) 
     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:535) 
     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:280) 
     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245) 
     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1124) 
     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:954) 
     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:832) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) 
     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) 
</failureMessage> 
</failsafe-summary> 

2017-10-10T15-02-35_189-jvmRun1.dump:

# Created on 2017-10-10T15:02:36.303 
Killing self fork JVM. Maven process died. 
+0

您是否已经找到此问题的原因以及可能的解决方法?我也遇到类似的问题 - https://*.com/questions/46831762/maven-build-and-maven-failsafe-plugin-the-forked-vm-terminated-without-properl – alexanoid

+1

不幸的是,我没有'吨。我怀疑这可能与内存有关,但没有遇到任何人能真正理解Java如何使用大量的插件和叉来管理内存,以及它如何与-Xmx之类的选项相关联以及它应该在哪里设置(全局,在Maven中,每个插件??)。最近不得不转移到另一项工作上......就目前而言。 – mironq

尝试降级到Surefire 1.18.1。今晚我遇到了这个问题,并花了几个小时对它进行了讨论,到目前为止,为什么新版本的Surefire在Docker下破解并不容易。

*更新*

,我有一个问题与高山的Linux,但在使用Ubuntu或者Debian基本图像一切都很好。因此,1.21内的某些内容破坏了与某些操作系统的兼容性。

+0

提高投票权,但我只降级到2.18.1(...我认为这实际上是你的意思?) – Lars

+0

这对我来说也是一个诡计(降级到surefire 2.18.1),因为一个失败的构建CircleCI –

+0

2.20作品,2.21不。这里有一个bug报告https://issues.apache.org/jira/browse/SUREFIRE-1444,看起来很相似,我将添加一些细节。 –