Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8249956

(process) Provide a way for Runtime.exec to use posix_spawn on linux

XMLWordPrintable

    • behavioral
    • minimal
    • The change does not seem to have been problematic on the releases where it was already pushed.
    • System or security property
    • JDK

      Summary

      Make POSIX_SPAWN a valid value for -Djdk.lang.Process.launchMechanism on Linux.

      Problem

      It is planned to phase out support for vfork() on Linux and to switch to using posix_spawn() like all other *nixes do today already. The first step toward that is to provide POSIX_SPAWN as an additional non-default option for -Djdk.lang.Process.launchMechanism.

      Solution

      The implementation already exists and is in use (by default) on our other *nix platforms (BSD/MacOS, Solaris, AIX). We only have to enable that implementation for Linux as well.

      Specification

      When -Djdk.lang.Process.launchMechanism=POSIX_SPAWN is specified, posix_spawn() will be used instead of the default vfork() to fork off child processes. The implementation is the same which is already in use on other Unices, just extended to Linux.

      What internally happens depends on the underlying libc implementation:

      1) on glibc versions >= 2.4 but smaller than 2.23, posix_spawn will use a combination of vfork() and exec(). 2) on glibc versions > 2.24 and on muslc, clone() is used with (CLONE_VM, CLONE_VFORK). 3) on very old glibc versions (<2.4), posix_spawn() will use fork()/exec().

            ewhelan Evan Whelan (Inactive)
            stuefe Thomas Stuefe
            Joe Darcy
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: