On Thu, 30 Apr 2026 11:45:49 GMT, Michael McMahon <[email protected]> wrote:

>> Hi,
>> 
>> This is a small fix for j.l.ProcessHandle on MacOS. Unlike other platforms, 
>> Mac returns a ProcessHandle for pid 0 whose descendants are _all_ processes 
>> on the system. This specific scenario tickles an off by one error where the 
>> descendants method tries to access an element past the end of the array of 
>> pids. The fix is to break from the loop before accessing this element.
>> 
>> Thanks,
>> 
>> Michael
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Michael McMahon has updated the pull request incrementally with two 
> additional commits since the last revision:
> 
>  - patch from rriggs (modified slightly)
>  - patch contributed by rriggs

src/java.base/share/classes/java/lang/ProcessHandleImpl.java line 317:

> 315:     public Optional<ProcessHandle> parent() {
> 316:         long ppid = parent0(pid, startTime);
> 317:         if (ppid <= 0) {

Note that `ProcessHandleImpl​::parent()` also needs to correctly handle a 
parent PID of `0`:
Suggestion:

        if (ppid < 0 || ppid == pid) {


Refs: 
https://github.com/openjdk/jdk/pull/30923/files/4cb921490631363188d75a84810b6150fc827aa1..9f1f6e72e9a5ba96e9cad416dfe402081ef0fdf0

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/30763#discussion_r3168617517

Reply via email to