RFR 10: 8184808 (process) isAlive should use pid for validity, not /proc/pid
thomas.stuefe at gmail.com
Tue Jul 18 18:53:22 UTC 2017
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
> 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 will be kept open until it is known that it is
> Thanks, Roger
>  https://bugs.openjdk.java.net/browse/JDK-8177932
More information about the core-libs-dev