On Fri, 21 Mar 2025 10:00:26 GMT, Aleksey Shipilev <sh...@openjdk.org> wrote:
> When jspawnhelper fails for whatever reason, but more prominently due to > [JDK-8325621](https://bugs.openjdk.org/browse/JDK-8325621), it will report > the errors into stdout, but not to the relevant `IOException`. So, if the > application is configured to only capture the exception logs (e.g. through > `java.util.logging`), we will miss any output from `jspawnhelper`, and user > would be left without a clue what have happened. We have seen customers > spending weeks trying to figure out what went wrong. > > It would be good to provide useful `IOException` when `jspawnhelper` fails. > We already have a precedent with vmError [printing helpful > suggestions](https://github.com/openjdk/jdk/blob/master/src/hotspot/share/utilities/vmError.cpp#L422) > when VM fails, we can do a similar thing here. > > I am very open to bike-shedding about the actual message :) > > Additional testing: > - [x] Ad-hoc experiments with breaking jspawnhelper > - [x] macos-aarch64-server-fastdebug, `java/lang/Process > java/lang/ProcessBuilder` src/java.base/unix/native/libjava/ProcessImpl_md.c line 806: > 804: case sizeof(errnum): > 805: waitpid(resultPid, NULL, 0); > 806: throwIOException(env, errnum, "Exec failed"); Why do we need to keep `throwIOException()` for this single call site? Can't we replace it with `throwInternalIOException()` as well? Otherwise looks good. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24149#discussion_r2013088430