RFR: 8329581: Java launcher no longer prints a stack trace
Thomas Stuefe
stuefe at openjdk.org
Tue Apr 16 08:28:03 UTC 2024
On Mon, 15 Apr 2024 18:25:02 GMT, Sonia Zaldana Calles <szaldana at openjdk.org> wrote:
> Hi folks,
>
> This PR aims to fix [JDK-8329581](https://bugs.openjdk.org/browse/JDK-8329581).
>
> I think the regression got introduced in [JDK-8315458](https://bugs.openjdk.org/browse/JDK-8315458).
>
> In the issue linked above, [LauncherHelper#getMainType](https://github.com/openjdk/jdk/pull/16461/files#diff-108a3a3e3c2d108c8c7f19ea498f641413b7c9239ecd2975a6c27d904c2ba226) got removed to simplify launcher code.
>
> Previously, we used ```getMainType``` to do the appropriate main method invocation in ```JavaMain```. However, we currently attempt to do all types of main method invocations at the same time [here](https://github.com/openjdk/jdk/blob/master/src/java.base/share/native/libjli/java.c#L623).
>
> Note how all of these invocations clear the exception reported with [CHECK_EXCEPTION_FAIL](https://github.com/openjdk/jdk/blob/140f56718bbbfc31bb0c39255c68568fad285a1f/src/java.base/share/native/libjli/java.c#L390).
>
> Therefore, if a legitimate exception comes up during one of these invocations, it does not get reported.
>
> I propose reintroducing ```LauncherHelper#getMainType``` but I'm looking forward to your suggestions.
>
> Cheers,
> Sonia
> Isn't this already fixed by #18753?
> Yes, it would be good to try the changes in pull/18753 first.
I still like @SoniaZaldana 's variant better.
AFAIU, in the original variant, we choose the main method via MethodFinder.findMainMethod, but then down in JavaMain in C we just try to invoke all variants in succession (static,args->instance,args->static,noargs->instance,noargs). Does that no mean we ignore the decision of findMainMethod?
Apart from that, it means fewer exceptions are thrown when starting the JVM if we avoid calling methods we know don't work.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/18786#issuecomment-2058521084
More information about the core-libs-dev
mailing list