RFR(S): 8240676: Meet not symmetric failure when running lucene on jdk8

Roland Westrelin rwestrel at redhat.com
Mon Mar 9 10:06:54 UTC 2020


http://cr.openjdk.java.net/~roland/8240676/webrev.00/

We saw the following failure when running lucene on jdk8:

=== Meet Not Symmetric ===
t = stable:narrowoop: org/apache/lucene/util/fst/Builder$Arc:TopPTR *,iid=top (inline_depth=InlineDepthTop)[int:max..0]:AnyNull:exact *,iid=top (inline_depth=-8)
this= stable:narrowoop: java/lang/Object:TopPTR *,iid=top (inline_depth=InlineDepthTop)[int:0]<ciObjArray length=0 type=<ciObjArrayKlass name=[Ljava/lang/Object; ident=885 address=0x00007f227840b8f0> ident=886 SCAVENGABLE address=0x00007f227840b9a0> *,iid=top (inline_depth=InlineDepthTop)
mt=(t meet this)= stable:narrowoop: org/apache/lucene/util/fst/Builder$Arc:TopPTR *,iid=top (inline_depth=InlineDepthTop)[int:0]:NotNull *
t_dual= narrowoop: org/apache/lucene/util/fst/Builder$Arc *[int:>=0]:NotNull:exact * (inline_depth=8)
this_dual= narrowoop: java/lang/Object *[int:0]<ciObjArray length=0 type=<ciObjArrayKlass name=[Ljava/lang/Object; ident=885 address=0x00007f227840b8f0> ident=886 SCAVENGABLE address=0x00007f227840b9a0> *
mt_dual= narrowoop: org/apache/lucene/util/fst/Builder$Arc *[int:0]:AnyNull *,iid=top (inline_depth=InlineDepthTop)
mt_dual meet t_dual= narrowoop: org/apache/lucene/util/fst/Builder$Arc *[int:>=0]:NotNull:exact * (inline_depth=8)
mt_dual meet this_dual= narrowoop: java/lang/Object *[int:0]:NotNull *

I couldn't reproduce it but if we extend the type verification code to
check for symmetry of duals as well in Type::meet_helper() it's
straightforward to write a test case to trigger it.

In the case above, having the meet of the 2 types be an array of unknown
type fixes the problem. So the test:

4318       if (above_centerline(ptr)) {

must be extended to cover the case above which i did by checking the ptr
of the resulting element.

Roland.



More information about the hotspot-compiler-dev mailing list