Bug: -XX:-ShenandoahWriteBarrierMemBar crashes XmlTransform
Roman Kennke
rkennke at redhat.com
Mon Jan 22 22:16:05 UTC 2018
Am 22.01.2018 um 12:51 schrieb Aleksey Shipilev:
> 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
>
Interestingly, I don't see it with the traversal patch. So maybe
something in it fixes it, or the different graph shapes generated by
traversal doesn't trigger it. Maybe try with the latest patch from the
'Traversal GC' thread?
Roman
More information about the shenandoah-dev
mailing list