Hi Roger

I think this is the cause and I believe the patch will work.

However, I have the following concern and minor comments:
a. Is it possible that following scenario happens?
   1. process A exits
   2. Completion thread in onExist runs and gets 0 as origStart, and then 
sleeps 5s
   3. process reaper thread reaps the process A, and then the pid is reused
   4. Completion thread gets a value as startTime, and then has to wait the new 
process termination
  I am not sure if the startTIme may be zero except the process is a zombie, if 
the startTIme may be zero only when the process is a zombie, we can change the 
condition to: if (startTime > 0 && startTime != origStart), otherwise we can't 
avoid such scenario, but if ProcessHandleImpl.onExit() passes startTime field 
to function completion, it may be a little bit better, at least, onExit() can 
be consistent with isAlive().

b. Should we rollback the change of JDK-8184808, at least, update the comment 
in that change?

c. Should we remove @key intermittent and the debug info added in JDK-8183019?

Thanks
Frank

> -----Original Message-----
> From: core-libs-dev [mailto:[email protected]] On Behalf 
> Of Roger Riggs
> Subject: RFR 8177932 (process) java/lang/ProcessHandle/OnExitTest.java failed 
> with "Process A should not be alive"
> 
> Please review a fix for an intermittent issue with ProcessHandle.onExit.
> On Solaris, the start time of a process reported through
> /proc/pid/psinfo changes to
> zero when the process is exiting.  The onExit implementation incorrectly
> interpreted zero
> meaning the pid had been re-used and the process was no longer alive.
> However,
> ProcessHandle.isAlive considered zero to be missing information and the
> process was still alive.
> 
> Webrev:
>    http://cr.openjdk.java.net/~rriggs/webrev-onexit-8177932/
> 
> Issue:
>    https://bugs.openjdk.java.net/browse/JDK-8177932
> 
> Thanks, Roger


Reply via email to