On Thu, 6 Jun 2024 18:40:51 GMT, Daniel Jeliński <djelin...@openjdk.org> wrote:
> `GetExitCodeProcess` method is not reliable for checking if a process exited > already; it returns 259 (STILL_ACTIVE) if the process hasn't exited yet, but > the same value is returned when the process exited with code 259. In order to > check if the process exited, we need to check if its handle is in a signaled > state using one of the wait methods. > > This PR fixes the onExit, exitValue, isAlive, and waitFor(timeout) methods to > correctly handle the problematic exit code. > > I haven't fixed the ProcessImpl.toString method. I'm not sure the problem is > important enough to justify an extra JNI call in the (probably typical) > still-alive case. > > Tier1-3 testing clean. I modified the existing OnExitTest to cover this case. This pull request has now been integrated. Changeset: b77bd5fd Author: Daniel Jeliński <djelin...@openjdk.org> URL: https://git.openjdk.org/jdk/commit/b77bd5fd6a6f7ddbed90300fba790da4fb683275 Stats: 50 lines in 4 files changed: 19 ins; 16 del; 15 mod 8333742: ProcessImpl and ProcessHandleImpl may mishandle processes that exit with code 259 Reviewed-by: rriggs ------------- PR: https://git.openjdk.org/jdk/pull/19586