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 <[email protected]> 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 > > >
