[lworld] Integrated: 8262747: [lworld] C1 compilation fails when PinAllInstructions is turned on
Yi Yang
github.com+5010047+kelthuzadx at openjdk.java.net
Tue Mar 2 13:33:58 UTC 2021
On Mon, 1 Mar 2021 11:50:07 GMT, Yi Yang <github.com+5010047+kelthuzadx at openjdk.org> wrote:
> When turning on the -XX:+PinAllInstructions, C1 hits the following assertion:
>
> `
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> # Internal Error (/home/qingfeng.yy/valhalla/src/hotspot/share/c1/c1_LIRGenerator.cpp:1524), pid=81974, tid=81994
> # assert(!x->is_pinned()) failed: only for unpinned constants
> ...
> Stack: [0x00007fc0771fa000,0x00007fc0772fb000], sp=0x00007fc0772f89f0, free space=1018k
> Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
> V [libjvm.so+0x65de6c] LIRGenerator::load_constant(Constant*)+0x2a
> V [libjvm.so+0x65ee4b] LIRGenerator::access_sub_element(LIRItem&, LIRItem&, LIR_OprDesc*&, ciField*, int)+0x319
> V [libjvm.so+0x66209c] LIRGenerator::do_LoadIndexed(LoadIndexed*)+0x846
> V [libjvm.so+0x6277c4] LoadIndexed::visit(InstructionVisitor*)+0x2e
> V [libjvm.so+0x6586ae] LIRGenerator::do_root(Instruction*)+0xfc
> V [libjvm.so+0x65856e] LIRGenerator::block_do(BlockBegin*)+0x7c
> V [libjvm.so+0x62696d] BlockList::iterate_forward(BlockClosure*)+0x5d
> V [libjvm.so+0x61ee24] IR::iterate_linear_scan_order(BlockClosure*)+0x2e
> V [libjvm.so+0x5ee90b] Compilation::emit_lir()+0x95
> V [libjvm.so+0x5ef140] Compilation::compile_java_method()+0x21e
> V [libjvm.so+0x5ef4af] Compilation::compile_method()+0x107
> V [libjvm.so+0x5efd05] Compilation::Compilation(AbstractCompiler*, ciEnv*, ciMethod*, int, BufferBlob*, bool, DirectiveSet*)+0x3bb
> V [libjvm.so+0x5f3baf] Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0xd9
> V [libjvm.so+0x81a938] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x88a
> V [libjvm.so+0x81956b] CompileBroker::compiler_thread_loop()+0x3df
> V [libjvm.so+0x83bef1] CompilerThread::thread_entry(JavaThread*, Thread*)+0x69
> V [libjvm.so+0x12fd598] JavaThread::thread_main_inner()+0x14c
> V [libjvm.so+0x12fd444] JavaThread::run()+0x11e
> V [libjvm.so+0x12fa630] Thread::call_run()+0x180
> V [libjvm.so+0x1028936] thread_native_entry(Thread*)+0x1e4
> `
>
> The root cause of this crash is because LIRGenerator::access_sub_element() uses LIRGenerator::load_constant() to load the default value of a primitive class type(constant) into a register, load_constant requires unpinned constant instr, so it unquestionably crashes when PinAllInstructions is enabled.
>
> This problem also occurred in many places under `test/hotspot/jtreg/compiler/valhalla`. After applying this patch, they all passed with slowdebug build.
>
> Thanks,
> Yang
This pull request has now been integrated.
Changeset: 436cfe61
Author: Yi Yang <qingfeng.yy at alibaba-inc.com>
Committer: Tobias Hartmann <thartmann at openjdk.org>
URL: https://git.openjdk.java.net/valhalla/commit/436cfe61
Stats: 15 lines in 1 file changed: 12 ins; 0 del; 3 mod
8262747: [lworld] C1 compilation fails when PinAllInstructions is turned on
Reviewed-by: thartmann
-------------
PR: https://git.openjdk.java.net/valhalla/pull/355
More information about the valhalla-dev
mailing list