8370766: JVM crashes when running compiler/exceptions/TestAccessErrorInCatch.java fails with -XX:+VerifyStack

Co-authored-by: Manuel Hässig <mhaessig@openjdk.org>
Reviewed-by: mhaessig, chagedorn
This commit is contained in:
Dean Long 2025-12-02 18:18:56 +00:00
parent ac0e6af8f9
commit 5627ff2d91
2 changed files with 14 additions and 7 deletions

View File

@ -1059,14 +1059,19 @@ void Parse::catch_inline_exceptions(SafePointNode* ex_map) {
assert(!stopped(), "you should return if you finish the chain");
// Oops, need to call into the VM to resolve the klasses at runtime.
// Note: This call must not deoptimize, since it is not a real at this bci!
kill_dead_locals();
make_runtime_call(RC_NO_LEAF | RC_MUST_THROW,
OptoRuntime::rethrow_Type(),
OptoRuntime::rethrow_stub(),
nullptr, nullptr,
ex_node);
{ PreserveReexecuteState preexecs(this);
// When throwing an exception, set the reexecute flag for deoptimization.
// This is mostly needed to pass -XX:+VerifyStack sanity checks.
jvms()->set_should_reexecute(true);
make_runtime_call(RC_NO_LEAF | RC_MUST_THROW,
OptoRuntime::rethrow_Type(),
OptoRuntime::rethrow_stub(),
nullptr, nullptr,
ex_node);
}
// Rethrow is a pure call, no side effects, only a result.
// The result cannot be allocated, so we use I_O

View File

@ -23,16 +23,18 @@
/*
* @test
* @bug 8367002
* @bug 8367002 8370766
* @summary Compilers might not generate handlers for recursive exceptions
*
* @compile IllegalAccessInCatch.jasm
* @run main/othervm -Xbatch
* -XX:CompileCommand=compileonly,IllegalAccessInCatch*::test
* -XX:+IgnoreUnrecognizedVMOptions -XX:+VerifyStack
* -XX:-TieredCompilation
* TestAccessErrorInCatch
* @run main/othervm -Xbatch
* -XX:CompileCommand=compileonly,IllegalAccessInCatch*::test
* -XX:+IgnoreUnrecognizedVMOptions -XX:+VerifyStack
* -XX:TieredStopAtLevel=3
* TestAccessErrorInCatch
*/