[14] RFR(S): 8234616: assert(0 <= i && i < _len) failed: illegal index in PhaseMacroExpand::expand_macro_nodes()
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Tue Dec 3 15:16:43 UTC 2019
> http://cr.openjdk.java.net/~thartmann/8234616/webrev.00/
Looks good.
Best regards,
Vladimir Ivanov
>
> We assert in PhaseMacroExpand::expand_macro_nodes() when accessing the macro_node array because
> 'macro_idx' is out of the upper bound:
> https://hg.openjdk.java.net/jdk/jdk/file/43c4fb8ba96b/src/hotspot/share/opto/macro.cpp#l2591
>
> The problem is that in the previous iteration, we hit the following code path which removes an
> unreachable macro node but does not decrement 'macro_idx':
> https://hg.openjdk.java.net/jdk/jdk/file/43c4fb8ba96b/src/hotspot/share/opto/macro.cpp#l2594
>
> The problem was introduced in JDK 14 by the fix for JDK-8227384:
> https://hg.openjdk.java.net/jdk/jdk/rev/43c4fb8ba96b#l3.25
>
> I've changed the loop to a for-loop to make sure the index is always decremented and also
> strengthened the asserts. I was not able to create a regression test but the issue reproduces
> intermittently with Lucene.
>
> Thanks,
> Tobias
>
More information about the hotspot-compiler-dev
mailing list