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