Tibor Digana commented on SUREFIRE-1422:

Maven process sends NOOP event every 10 seconds (longer because of GC
period may take several seconds on large Heap).
A Thread counts every NOOP. If NOOP has not been received after 3
successive periods (30 seconds) then the forked JVM kills itself.
This is an old mechanism which is disabled if new mechanism (ps -p ...) do
not fail. The new mechanism checks the e-time of PPID (means Maven process)
every single second. If the output of the command is empty it means the
Maven finished and the forked JVM will kill itself. If the e-time is
suddenly smaller it means the PPID is reused and again the fork will be

On Wed, Mar 7, 2018 at 11:28 AM, Thomas Raehalme (JIRA) <j...@apache.org>

> Forking fails on Linux if /bin/ps isn't available
> -------------------------------------------------
>                 Key: SUREFIRE-1422
>                 URL: https://issues.apache.org/jira/browse/SUREFIRE-1422
>             Project: Maven Surefire
>          Issue Type: Bug
>          Components: process forking
>    Affects Versions: 2.20.1
>         Environment: Linux (Debian 9 with OpenJDK 8)
>            Reporter: Emmanuel Bourg
>            Assignee: Tibor Digana
>            Priority: Major
>             Fix For: 2.21.0
> Hi,
> With the changes introduced by SUREFIRE-1302 I'm now experiencing a failure 
> on Linux when the fork mode is enabled:
> {code}
> [ERROR] Failed to execute goal 
> org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test (default-test) on 
> project foo: There are test failures.
> [ERROR] Please refer to /foo/target/surefire-reports for the individual test 
> results.
> [ERROR] Please refer to dump files (if any exist) [date]-jvmRun[N].dump, 
> [date].dumpstream and [date]-jvmRun[N].dumpstream.
> [ERROR] The forked VM terminated without properly saying goodbye. VM crash or 
> System.exit called?
> {code}
> I traced the issue back to the PpidChecker class, the code assumes that 
> {{/bin/ps}} or {{/usr/bin/ps}} exist but this isn't guaranteed (especially on 
> trimmed down containers commonly used for continuous integration).
> It would be nice to have a fallback mechanism when ps isn't available, or at 
> least check its existence and display an explicit message stating that it 
> must be installed.

This message was sent by Atlassian JIRA

Reply via email to