Bug: -XX:-ShenandoahWriteBarrierMemBar crashes XmlTransform
Aleksey Shipilev
shade at redhat.com
Mon Jan 22 11:51:45 UTC 2018
Run XmlTransform with:
-XX:ShenandoahGCHeuristics=passive -XX:+ShenandoahWriteBarrier -XX:-ShenandoahWriteBarrierMemBar
Fails with:
# Internal Error
(/home/shade/trunks/shenandoah-jdk10/src/hotspot/share/opto/shenandoahSupport.cpp:4062), pid=5060,
tid=5085
# assert(load->Opcode() == Op_LoadUB) failed: inconsistent
Stack: [0x00007f25c462d000,0x00007f25c472e000], sp=0x00007f25c4725ad0, free space=994k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native
code)
V [libjvm.so+0x1969e5e] VMError::report_and_die(int, char const*, char const*, __va_list_tag*,
Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x4ce
V [libjvm.so+0x196a9cf] VMError::report_and_die(Thread*, char const*, int, char const*, char
const*, __va_list_tag*)+0x2f
V [libjvm.so+0xaf7d82] report_vm_error(char const*, int, char const*, char const*, ...)+0x112
V [libjvm.so+0x17b10ea] ShenandoahWriteBarrierNode::move_evacuation_test_out_of_loop(IfNode*,
PhaseIdealLoop*)+0xc2a
V [libjvm.so+0x1149679] PhaseIdealLoop::do_unswitching(IdealLoopTree*, Node_List&)+0x2ac9
V [libjvm.so+0x17b0397] ShenandoahWriteBarrierNode::optimize_after_expansion(Node_List const&,
Node_List const&, Node_List&, PhaseIdealLoop*)+0x3c7
V [libjvm.so+0x115e95d] PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0x11bd
V [libjvm.so+0xa4bc3b] Compile::optimize_loops(int&, PhaseIterGVN&, LoopOptsMode)+0x58b
V [libjvm.so+0x17a3b78] ShenandoahWriteBarrierNode::expand(Compile*, PhaseIterGVN&, int&)+0x648
I put the additional printing in the assert, and it is now:
assert(load->Opcode() == Op_LoadUB) failed: inconsistent: AndI
I believe that AndI is the mask from GC state load. Not sure if that entire branch matters for
correctness, or we just assert wrong things. Removing the assert makes the compiler fail with "Bad
graph detected in build_loop_late".
Can you guys understand what is going on there, and fix it? I think Traversal GC is broken because
of that.
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list