From 74fc4e4ee7f2e44d9c8339ff6665d4171d298f8f Mon Sep 17 00:00:00 2001 From: Thomas Stuefe Date: Wed, 21 May 2025 04:39:35 +0000 Subject: [PATCH] 8357179: Deprecate VFORK launch mechanism from Process implementation (linux) Reviewed-by: rriggs --- .../unix/classes/java/lang/ProcessImpl.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/java.base/unix/classes/java/lang/ProcessImpl.java b/src/java.base/unix/classes/java/lang/ProcessImpl.java index 7b5d27f1cc1..390a4f28477 100644 --- a/src/java.base/unix/classes/java/lang/ProcessImpl.java +++ b/src/java.base/unix/classes/java/lang/ProcessImpl.java @@ -100,16 +100,26 @@ final class ProcessImpl extends Process { // Should be value of a LaunchMechanism enum LaunchMechanism lm = LaunchMechanism.valueOf(s.toUpperCase(Locale.ROOT)); switch (OperatingSystem.current()) { - case LINUX: - return lm; // All options are valid for Linux + case LINUX: { + // All options are valid for Linux, but VFORK is deprecated and results + // in a warning + if (lm == LaunchMechanism.VFORK) { + System.err.println("VFORK MODE DEPRECATED"); + System.err.println(""" + The VFORK launch mechanism has been deprecated for being dangerous. + It will be removed in a future java version. Either remove the + jdk.lang.Process.launchMechanism property (preferred) or use FORK mode + instead (-Djdk.lang.Process.launchMechanism=FORK). + """); + } + return lm; + } case AIX: case MACOS: if (lm != LaunchMechanism.VFORK) { return lm; // All but VFORK are valid } break; - case WINDOWS: - // fall through to throw to Error } } catch (IllegalArgumentException e) { }