JDK-8203699 : java/lang/invoke/SpecialInterfaceCall fails with SIGILL on aarch64
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 11
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • CPU: aarch64
  • Submitted: 2018-05-23
  • Updated: 2021-02-01
  • Resolved: 2018-05-25
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 11 Other
11 b16Fixed openjdk8u292Fixed
Related Reports
Relates :  
Relates :  
Description
fastdebug build fails with this hs_err:
  http://cr.openjdk.java.net/~shade/8203699/hs_err-1.log

#  SIGILL (0x4) at pc=0x0000ffff94dba74c, pid=18011, tid=18022

  0x0000ffff94dba744: str	x11, [x10,#32]
  0x0000ffff94dba748: b	0x0000ffff94dba750
  0x0000ffff94dba74c: hlt	#0x0      <----- here
  0x0000ffff94dba750: ldr	w12, [xmethod,#36]
  0x0000ffff94dba754: ldr	xmethod, [xmethod,#16]

This seems to be the proper hlt failure due to failing check in VerifyMethodHandles block at MethodHandles::generate_method_handle_dispatch:

      if (VerifyMethodHandles && iid != vmIntrinsics::_linkToInterface) {
        Label L_ok;
        Register temp2_defc = temp2;
        __ load_heap_oop(temp2_defc, member_clazz, temp3);
        load_klass_from_Class(_masm, temp2_defc);
        __ verify_klass_ptr(temp2_defc);
        __ check_klass_subtype(temp1_recv_klass, temp2_defc, temp3, L_ok);
        // If we get here, the type check failed!
        __ hlt(0);
        // __ STOP("receiver class disagrees with MemberName.clazz");
        __ bind(L_ok);
      }
      BLOCK_COMMENT("} check_receiver");


Comments
Andrew is looking into this. Andrew did the AArch64-specific bugfixes for "Better interface invocations", might be that fix is still borked.
23-05-2018

It may relate to the issues on which 8200167 builds. Check if the changes for JDK-8168699 (not public) http://hg.openjdk.java.net/jdk10/jdk10/hotspot/rev/0cdc61e61d57 and also JDK-8174962 (also not public): http://hg.openjdk.java.net/jdk/jdk/rev/2e867226b914 seem correct for Aarch64. But also odd that Andrew Dinn did not see this failure when testing nestmates.
23-05-2018

Looks similar, but it is puzzling why this fails even on latest jdk/jdk, which contains JDK-8200167.
23-05-2018

That's the kind of crash you will get from that test if the fix for JDK-8200167 is not present. (The test was updated as part of that fix.)
23-05-2018