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)

Reply via email to