RFR 10: 8184808 (process) isAlive should use pid for validity, not /proc/pid

Thomas Stüfe thomas.stuefe at gmail.com
Tue Jul 18 18:53:22 UTC 2017

Hi Roger,

I think this may fail if you have no permission to send a signal to that
process. In that case, kill(2) may yield EPERM and isAlive may return false
even though the process is alive.

But then, I am not sure if that could happen in that particular scenario,
plus it may also mean that you do not have access to /proc/pid either. So,
I do not know how much of an issue this could be.

Otherwise, the fix seems straightforward.

Kind Regards, Thomas

On Tue, Jul 18, 2017 at 8:46 PM, Roger Riggs <Roger.Riggs at oracle.com> wrote:

> Please review a fix for an intermittent failure in the ProcessHandle
> OnExitTest
> that fails frequently on Solaris.
> ProcessHandle.isAlive is using /proc/pid/psinfo to determine if a process
> is alive and it's start time.
> However, it appears that the between the process exiting and the reaping
> of its status, the
> psinfo file indicates the process is alive but kill(pid, 0) reports that
> is is not alive.
> Depending on a race, the ProcessHandler.onExit may determine the process
> has exited
> but later isAlive may report it is alive.
> To have a consistent view of the process being alive,
> ProcessHandle.isAlive in its native implementation
> should use kill(pid, 0) to determine if the process is definitively
> determine if the process alive.
> The original issue[1] will be kept open until it is known that it is
> resolved.
> Webrev:
>   http://cr.openjdk.java.net/~rriggs/webrev-alive-solaris-8184808/
> Issue:
>    https://bugs.openjdk.java.net/browse/JDK-8184808
> Thanks, Roger
> [1] https://bugs.openjdk.java.net/browse/JDK-8177932

More information about the core-libs-dev mailing list