Guillaume Boué created SUREFIRE-1376:
----------------------------------------
Summary: "The forked VM terminated without properly saying
goodbye" when running Surefire in a very deep project structure on Windows
Key: SUREFIRE-1376
URL: https://issues.apache.org/jira/browse/SUREFIRE-1376
Project: Maven Surefire
Issue Type: Bug
Components: Maven Failsafe Plugin, Maven Surefire Plugin
Affects Versions: 2.20
Environment: Windows
Reporter: Guillaume Boué
When Surefire is ran on a project under a very long path (exceeding Windows'
{{MAX_PATH}}), the invocation fails with
{noformat}
org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM
terminated without properly saying goodbye. VM crash or System.exit called?
{noformat}
In the generated dumpstream, there is
{noformat}
# Created on 2017-05-28T10:17:09.474
Error: Unable to access jarfile
C:\Users\Guillaume\Desktop\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\target\surefire\surefirebooter2512478076549179739.jar
{noformat}
The problem is that the path to the JAR file exceeds the maximum path length of
260 characters, and so it cannot be accessed.
Prepending the path to the JAR file with {{\\?\}}, [as documented
on MSDN|https://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx#maxpath],
makes the test run again correctly. I've attached a possible patch with this
approach (SUREFIRE-1376-prefix.patch, that also handles UNC pathnames), but
perhaps there is a better way to tackle this problem.
In order to reproduce this, it is possible to create a project under lots of
different subdirectories, something like:
{noformat}
└───surefire-longpath-test-with-windows
└───surefire-longpath-test-with-windows
└───surefire-longpath-test-with-windows
└───surefire-longpath-test-with-windows
└───surefire-longpath-test-with-windows
│ pom.xml
│
└───src
└───test
└───java
└───Test.java
{noformat}
As a side-note, this issue is behind the current Jenkins failures on
[maven-plugins-ITs-m3.1.x-with-maven-plugin-jdk-1.8_windows|https://builds.apache.org/job/maven-plugins-ITs-m3.1.x-with-maven-plugin-jdk-1.8_windows/3702/]
when running the ITs on the Assembly Plugin.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)