From 2c62796512f76571efc966ff0f165061c19bcb1e Mon Sep 17 00:00:00 2001 From: Michael-Mc-Mahon Date: Thu, 16 Apr 2026 08:07:29 +0100 Subject: [PATCH 1/7] fix --- .../classes/java/lang/ProcessHandleImpl.java | 5 +- test/jdk/java/lang/ProcessHandle/PidZero.java | 50 +++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 test/jdk/java/lang/ProcessHandle/PidZero.java diff --git a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java index a7243b8b6f444..9937fbce4d061 100644 --- a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java +++ b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java @@ -458,7 +458,10 @@ public Stream descendants() { next++; } } - ppid = pids[++count]; // pick up the next pid to scan for + if (++count >= size) { + break; + } + ppid = pids[count]; // pick up the next pid to scan for ppStart = starttimes[count]; // and its start time } while (count < next); diff --git a/test/jdk/java/lang/ProcessHandle/PidZero.java b/test/jdk/java/lang/ProcessHandle/PidZero.java new file mode 100644 index 0000000000000..0cc20a3b66b5c --- /dev/null +++ b/test/jdk/java/lang/ProcessHandle/PidZero.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +/* + * @test + * @summary ProcessHandle.descendants fails with AIOOE for process 0 + * @requires os.family == "mac" + * @library /test/lib + * @run junit PidZero + */ +public class PidZero { + /** + * Test of ProcessHandle.descendants for pid 0 + * Only Macos allows a ProcessHandle to be instantiated for pid 0 + * which includes all processes on the system, but the implementation + * throws ArrayIndexOutOfBoundException without this fix. + */ + @Test + public void test() { + int num = ProcessHandle.of(0).orElseThrow().descendants().toList().size(); + } +} From c746c05493c91a330dcfe7963b0c9a3c4befce44 Mon Sep 17 00:00:00 2001 From: Michael-Mc-Mahon Date: Thu, 16 Apr 2026 11:58:22 +0100 Subject: [PATCH 2/7] remove imports not needed --- .../com/sun/nio/sctp/SctpChannel/Bind$1.class | Bin 0 -> 309 bytes .../Bind$BindNotificationHandler.class | Bin 0 -> 1760 bytes .../Bind$UnsupportedSocketAddress.class | Bin 0 -> 383 bytes test/jdk/com/sun/nio/sctp/SctpChannel/Bind.class | Bin 0 -> 9213 bytes test/jdk/com/sun/nio/sctp/SctpChannel/Util.class | Bin 0 -> 3789 bytes test/jdk/java/lang/ProcessHandle/PidZero.java | 6 ------ 6 files changed, 6 deletions(-) create mode 100644 test/jdk/com/sun/nio/sctp/SctpChannel/Bind$1.class create mode 100644 test/jdk/com/sun/nio/sctp/SctpChannel/Bind$BindNotificationHandler.class create mode 100644 test/jdk/com/sun/nio/sctp/SctpChannel/Bind$UnsupportedSocketAddress.class create mode 100644 test/jdk/com/sun/nio/sctp/SctpChannel/Bind.class create mode 100644 test/jdk/com/sun/nio/sctp/SctpChannel/Util.class diff --git a/test/jdk/com/sun/nio/sctp/SctpChannel/Bind$1.class b/test/jdk/com/sun/nio/sctp/SctpChannel/Bind$1.class new file mode 100644 index 0000000000000000000000000000000000000000..01df5e2be6df39d5cf86fb517d1cf0909b834102 GIT binary patch literal 309 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 literal 0 HcmV?d00001 diff --git a/test/jdk/com/sun/nio/sctp/SctpChannel/Util.class b/test/jdk/com/sun/nio/sctp/SctpChannel/Util.class new file mode 100644 index 0000000000000000000000000000000000000000..ea3f3802cf511f0ea50a1a9512e259d945e59bd4 GIT binary patch literal 3789 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 literal 0 HcmV?d00001 diff --git a/test/jdk/java/lang/ProcessHandle/PidZero.java b/test/jdk/java/lang/ProcessHandle/PidZero.java index 0cc20a3b66b5c..0b91699995fea 100644 --- a/test/jdk/java/lang/ProcessHandle/PidZero.java +++ b/test/jdk/java/lang/ProcessHandle/PidZero.java @@ -21,12 +21,6 @@ * questions. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; - -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; /* From 13b95072a9519b999f76d95169c675435b8ab2c0 Mon Sep 17 00:00:00 2001 From: Michael-Mc-Mahon Date: Thu, 16 Apr 2026 12:03:17 +0100 Subject: [PATCH 3/7] remove files --- .../com/sun/nio/sctp/SctpChannel/Bind$1.class | Bin 309 -> 0 bytes .../Bind$BindNotificationHandler.class | Bin 1760 -> 0 bytes .../Bind$UnsupportedSocketAddress.class | Bin 383 -> 0 bytes test/jdk/com/sun/nio/sctp/SctpChannel/Bind.class | Bin 9213 -> 0 bytes test/jdk/com/sun/nio/sctp/SctpChannel/Util.class | Bin 3789 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/jdk/com/sun/nio/sctp/SctpChannel/Bind$1.class delete mode 100644 test/jdk/com/sun/nio/sctp/SctpChannel/Bind$BindNotificationHandler.class delete mode 100644 test/jdk/com/sun/nio/sctp/SctpChannel/Bind$UnsupportedSocketAddress.class delete mode 100644 test/jdk/com/sun/nio/sctp/SctpChannel/Bind.class delete mode 100644 test/jdk/com/sun/nio/sctp/SctpChannel/Util.class diff --git a/test/jdk/com/sun/nio/sctp/SctpChannel/Bind$1.class b/test/jdk/com/sun/nio/sctp/SctpChannel/Bind$1.class deleted file mode 100644 index 01df5e2be6df39d5cf86fb517d1cf0909b834102..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 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 diff --git a/test/jdk/com/sun/nio/sctp/SctpChannel/Util.class b/test/jdk/com/sun/nio/sctp/SctpChannel/Util.class deleted file mode 100644 index ea3f3802cf511f0ea50a1a9512e259d945e59bd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3789 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 From 557922d079957231f84e373e2a84d4d427096130 Mon Sep 17 00:00:00 2001 From: Michael-Mc-Mahon Date: Thu, 16 Apr 2026 14:28:13 +0100 Subject: [PATCH 4/7] updated impl and test --- src/java.base/share/classes/java/lang/ProcessHandleImpl.java | 4 ++-- test/jdk/java/lang/ProcessHandle/PidZero.java | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java index 9937fbce4d061..0b7c0cc447982 100644 --- a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java +++ b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java @@ -458,10 +458,10 @@ public Stream descendants() { next++; } } - if (++count >= size) { + if (count+1 >= size) { break; } - ppid = pids[count]; // pick up the next pid to scan for + ppid = pids[++count]; // pick up the next pid to scan for ppStart = starttimes[count]; // and its start time } while (count < next); diff --git a/test/jdk/java/lang/ProcessHandle/PidZero.java b/test/jdk/java/lang/ProcessHandle/PidZero.java index 0b91699995fea..383f4b64c24d6 100644 --- a/test/jdk/java/lang/ProcessHandle/PidZero.java +++ b/test/jdk/java/lang/ProcessHandle/PidZero.java @@ -22,12 +22,13 @@ */ import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; /* * @test + * @bug 8381567 * @summary ProcessHandle.descendants fails with AIOOE for process 0 * @requires os.family == "mac" - * @library /test/lib * @run junit PidZero */ public class PidZero { @@ -39,6 +40,6 @@ public class PidZero { */ @Test public void test() { - int num = ProcessHandle.of(0).orElseThrow().descendants().toList().size(); + assertDoesNotThrow(() -> ProcessHandle.of(0).orElseThrow().descendants().toList().size()); } } From ce462da47b2c1131e7a68b9db292f9f0344b7eb2 Mon Sep 17 00:00:00 2001 From: Michael McMahon <70538289+Michael-Mc-Mahon@users.noreply.github.com> Date: Fri, 17 Apr 2026 10:01:28 +0100 Subject: [PATCH 5/7] Update src/java.base/share/classes/java/lang/ProcessHandleImpl.java Co-authored-by: Andrey Turbanov --- src/java.base/share/classes/java/lang/ProcessHandleImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java index 0b7c0cc447982..566aad9045b09 100644 --- a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java +++ b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java @@ -458,7 +458,7 @@ public Stream descendants() { next++; } } - if (count+1 >= size) { + if (count + 1 >= size) { break; } ppid = pids[++count]; // pick up the next pid to scan for From f50fb9617ccbc07be1b104cdcd948df124e2e5ca Mon Sep 17 00:00:00 2001 From: Michael-Mc-Mahon Date: Thu, 23 Apr 2026 13:57:43 +0100 Subject: [PATCH 6/7] update --- .../macosx/native/libjava/ProcessHandleImpl_macosx.c | 5 +++++ src/java.base/share/classes/java/lang/ProcessHandleImpl.java | 5 +---- test/jdk/java/lang/ProcessHandle/PidZero.java | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/java.base/macosx/native/libjava/ProcessHandleImpl_macosx.c b/src/java.base/macosx/native/libjava/ProcessHandleImpl_macosx.c index 2db64ef37b5d9..06bf394601dc5 100644 --- a/src/java.base/macosx/native/libjava/ProcessHandleImpl_macosx.c +++ b/src/java.base/macosx/native/libjava/ProcessHandleImpl_macosx.c @@ -203,6 +203,11 @@ pid_t os_getParentPidAndTimings(JNIEnv *env, pid_t jpid, struct kinfo_proc kp; size_t bufSize = sizeof kp; + if (jpid == 0) { + // macos would return a process 0. It's not a real process + return -1; + } + // Read the process info for the specific pid int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, pid}; diff --git a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java index 566aad9045b09..769bd3745ee97 100644 --- a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java +++ b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java @@ -458,9 +458,6 @@ public Stream descendants() { next++; } } - if (count + 1 >= size) { - break; - } ppid = pids[++count]; // pick up the next pid to scan for ppStart = starttimes[count]; // and its start time } while (count < next); @@ -513,7 +510,7 @@ public boolean equals(Object obj) { * The attributes of a process vary by operating system and are not available * in all implementations. Additionally, information about other processes * is limited by the operating system privileges of the process making the request. - * If a value is not available, either a {@code null} or {@code -1} is stored. + * If a value is not available, either a {@code null} or {@code 0} is stored. * The accessor methods return {@code null} if the value is not available. */ static class Info implements ProcessHandle.Info { diff --git a/test/jdk/java/lang/ProcessHandle/PidZero.java b/test/jdk/java/lang/ProcessHandle/PidZero.java index 383f4b64c24d6..168b7df45d7b6 100644 --- a/test/jdk/java/lang/ProcessHandle/PidZero.java +++ b/test/jdk/java/lang/ProcessHandle/PidZero.java @@ -22,7 +22,7 @@ */ import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertTrue; /* * @test @@ -40,6 +40,6 @@ public class PidZero { */ @Test public void test() { - assertDoesNotThrow(() -> ProcessHandle.of(0).orElseThrow().descendants().toList().size()); + assertTrue(ProcessHandle.of(0).isEmpty()); } } From 3d447abc3f045c92b405a61607c918a8a707a8c1 Mon Sep 17 00:00:00 2001 From: Michael-Mc-Mahon Date: Thu, 23 Apr 2026 14:05:35 +0100 Subject: [PATCH 7/7] typo --- src/java.base/share/classes/java/lang/ProcessHandleImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java index 769bd3745ee97..a7243b8b6f444 100644 --- a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java +++ b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java @@ -510,7 +510,7 @@ public boolean equals(Object obj) { * The attributes of a process vary by operating system and are not available * in all implementations. Additionally, information about other processes * is limited by the operating system privileges of the process making the request. - * If a value is not available, either a {@code null} or {@code 0} is stored. + * If a value is not available, either a {@code null} or {@code -1} is stored. * The accessor methods return {@code null} if the value is not available. */ static class Info implements ProcessHandle.Info {