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