From 8bd4a36e85576848b03b996751d21ef137b5a6d5 Mon Sep 17 00:00:00 2001 From: tstuefe Date: Sat, 17 May 2025 08:46:22 +0200 Subject: [PATCH 1/2] deprecate-vfork --- .../unix/classes/java/lang/ProcessImpl.java | 16 ++++++++++++---- 1 file changed, 12 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 7b5d27f1cc161..505bf9215af3a 100644 --- a/src/java.base/unix/classes/java/lang/ProcessImpl.java +++ b/src/java.base/unix/classes/java/lang/ProcessImpl.java @@ -100,16 +100,24 @@ private static LaunchMechanism launchMechanism() { // 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.\n" + + "It will be removed in a future java version. Either remove the\n" + + "jdk.lang.Process.launchMechanism property (preferred) or use FORK mode\n" + + "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) { } From ec3197f91dd6e13bc99b81000ca853dff5b3e5b6 Mon Sep 17 00:00:00 2001 From: tstuefe Date: Mon, 19 May 2025 18:55:48 +0200 Subject: [PATCH 2/2] use string block --- src/java.base/unix/classes/java/lang/ProcessImpl.java | 10 ++++++---- 1 file changed, 6 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 505bf9215af3a..390a4f284774a 100644 --- a/src/java.base/unix/classes/java/lang/ProcessImpl.java +++ b/src/java.base/unix/classes/java/lang/ProcessImpl.java @@ -105,10 +105,12 @@ private static LaunchMechanism launchMechanism() { // 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.\n" + - "It will be removed in a future java version. Either remove the\n" + - "jdk.lang.Process.launchMechanism property (preferred) or use FORK mode\n" + - "instead (-Djdk.lang.Process.launchMechanism=FORK)."); + 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; }