JDK-8148623 : unsuppressed meet not symmetric error
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 8,9,10
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • Submitted: 2016-01-29
  • Updated: 2017-02-21
  • Resolved: 2017-02-21
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 10
10Resolved
Related Reports
Duplicate :  
Description
While running some Graal unit tests I hit this:

=== Meet Not Symmetric ===
t   =                   stable:narrowoop: java/lang/reflect/Member:TopPTR *,iid=top (inline_depth=InlineDepthTop)[int:max..0]:TopPTR *,iid=top (inline_depth=InlineDepthTop)
this=                   stable:narrowoop: java/lang/reflect/Member:TopPTR *,iid=top (inline_depth=InlineDepthTop)[int:max..0]:TopPTR *,iid=top (inline_depth=InlineDepthTop) (speculative=stable:narrowoop: java/lang/reflect/AccessibleObject:TopPTR *,iid=top (inline_depth=InlineDepthTop)[int:max..0]:TopPTR *,iid=top (inline_depth=InlineDepthTop))
mt=(t meet this)=       stable:narrowoop: java/lang/reflect/Member:TopPTR *,iid=top (inline_depth=InlineDepthTop)[int:max..0]:TopPTR *,iid=top (inline_depth=InlineDepthTop) (speculative=stable:narrowoop: java/lang/reflect/Member:TopPTR * (inline_depth=InlineDepthTop)[int:max..0]:TopPTR *,iid=top (inline_depth=InlineDepthTop))
t_dual=                 narrowoop: java/lang/reflect/Member *[int:>=0] *
this_dual=              narrowoop: java/lang/reflect/Member *[int:>=0] * (speculative=narrowoop: java/lang/reflect/AccessibleObject *[int:>=0] *)
mt_dual=                narrowoop: java/lang/reflect/Member *[int:>=0] * (speculative=narrowoop: java/lang/reflect/Member *,iid=top[int:>=0] *)
mt_dual meet t_dual=    narrowoop: java/lang/reflect/Member *[int:>=0] *
mt_dual meet this_dual= narrowoop: java/lang/reflect/Member *[int:>=0] * (speculative=narrowoop: java/lang/Object *[int:>=0] *)

The mismatch should have been filtered out by interface_vs_oop because the mismatch is in the speculative type but the overriding of interface_vs_oop by TypeAryPtr hides to special logic for checking the speculative type.
Comments
Thank you for all your input, I'll close this as a duplicate of JDK-8141551 then.
21-02-2017

Not right now. I can try to reproduce this with our fix disabled. I saw some fixes in 9 in this area and I wonder if it was fixed there. it's possible JDK-8141551 fixes this. http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/b425a78e8512#l3.38 is very similar to my workaround in JDK8. Given all the usage of Graal with 9 now, I think if it wasn't fixed in 9 it would have been reported already. I would feel reasonably comfortable closing this as a duplicate of JDK-8141551.
20-02-2017

[~never], do you have a hs_err and replay compilation file?
20-02-2017

ILW = Assert in C2's type system, rare (with Graal unit tests), exclude method from compilation = HLM = P3
20-02-2017

I can't provide a test case for this as this shows up when using graal on top of jvmci in jdk8. I could probably provide a test setup to reproduce it if you need it. You can see from looking at the code though that the inheritance of the checks is broken by the overriding. The logic should probably be revisited. I pushed http://hg.openjdk.java.net/graal/graal-jvmci-8/rev/071a85b9e631 to our local version of 8 which reworks the overriding and it solves the problem for us. I don't propose it as the solution since I suspect someone should rethink the overall structure of that code.
29-01-2016