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

Vladimir Kozlov vladimir.kozlov at oracle.com
Wed Mar 11 23:01:49 UTC 2020


I think next call should be under #ifdef ASSERT as originally:

+  this_t->check_symmetrical(t, mt);
+#ifdef ASSERT

Otherwise fix seems fine. Please, test.

Thanks,
Vladimir K

On 3/9/20 3:06 AM, Roland Westrelin wrote:
> 
> 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