Some more analysis: Tried to explicitely compile as well as exclude few methods during compilation such as 'java.lang.StringLatin1::hashCode', 'java.util.concurrent.ConcurrentHashMap', 'java.lang.String*' which are part of trace as logged in above comments, with the help of advanced JIT options. However it is not good enough to draw any conclusion as `java -version` command passes on random runs. `mvn -v` which consistently fails, is seen to be passing always with any of above combination set using MAVEN_OPTS.
Also compared the assembly log as @jonalbrecht mentioned above on qemu setup vs native s390x for `mvn -v` command. The initial few compiled methods match, however it fails for 'java.lang.String::isLatin1': Failure in qemu : ImmutableOopMap{Z_R2=Oop }pc offsets: 170 232 244 272 Compiled method (c1) 1077 12 2 java.lang.String::equalsIgnoreCase (45 bytes) total in heap [0x00000040117f2210,0x00000040117f28b0] = 1696 relocation [0x00000040117f2370,0x00000040117f23c8] = 88 constants [0x00000040117f2400,0x00000040117f2440] = 64 main code [0x00000040117f2440,0x00000040117f2600] = 448 stub code [0x00000040117f2600,0x00000040117f2668] = 104 metadata [0x00000040117f2668,0x00000040117f2688] = 32 scopes data [0x00000040117f2688,0x00000040117f2738] = 176 scopes pcs [0x00000040117f2738,0x00000040117f2888] = 336 dependencies [0x00000040117f2888,0x00000040117f2890] = 8 nul chk table [0x00000040117f2890,0x00000040117f28b0] = 32 ImmutableOopMap{}pc offsets: 288 ImmutableOopMap{Z_R2=Oop Z_R5=Oop }pc offsets: 372 ImmutableOopMap{Z_R5=Oop Z_R2=Oop }pc offsets: 384 392 400 unimplemented opcode 0x0000 # # A fatal error has been detected by the Java Runtime Environment: # # SIGILL (0x4) at pc=0x00000040117f1680, pid=11738, tid=11787 # # JRE version: OpenJDK Runtime Environment (11.0.11+9) (build 11.0.11+9-Ubuntu-0ubuntu2.20.04) # Java VM: OpenJDK 64-Bit Server VM (11.0.11+9-Ubuntu-0ubuntu2.20.04, compiled mode, tiered, compressed oops, g1 gc, linux-s390x) # Problematic frame: # J 9 c1 java.lang.String.hashCode()I java.base (49 bytes) @ 0x00000040117f1680 [0x00000040117f1640+0x0000000000000040] # # Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport %p %s %c %d %P %E" (or dumping to //core.11738) # # An error report file with more information is saved as: # //hs_err_pid11738.log vs Native s390x log: ImmutableOopMap{Z_R2=Oop }pc offsets: 170 232 244 272 Compiled method (c1) 34 12 2 java.lang.String::equalsIgnoreCase (45 bytes) total in heap [0x000003ff7a097110,0x000003ff7a0977b0] = 1696 relocation [0x000003ff7a097270,0x000003ff7a0972c8] = 88 constants [0x000003ff7a097300,0x000003ff7a097340] = 64 main code [0x000003ff7a097340,0x000003ff7a097500] = 448 stub code [0x000003ff7a097500,0x000003ff7a097568] = 104 metadata [0x000003ff7a097568,0x000003ff7a097588] = 32 scopes data [0x000003ff7a097588,0x000003ff7a097638] = 176 scopes pcs [0x000003ff7a097638,0x000003ff7a097788] = 336 dependencies [0x000003ff7a097788,0x000003ff7a097790] = 8 nul chk table [0x000003ff7a097790,0x000003ff7a0977b0] = 32 ImmutableOopMap{}pc offsets: 276 ImmutableOopMap{Z_R2=Oop Z_R5=Oop }pc offsets: 360 ImmutableOopMap{Z_R5=Oop Z_R2=Oop }pc offsets: 372 380 388 Compiled method (c1) 34 13 2 java.lang.String::isLatin1 (19 bytes) total in heap [0x000003ff7a097810,0x000003ff7a097c10] = 1024 relocation [0x000003ff7a097970,0x000003ff7a097990] = 32 constants [0x000003ff7a0979c0,0x000003ff7a097a00] = 64 main code [0x000003ff7a097a00,0x000003ff7a097b40] = 320 stub code [0x000003ff7a097b40,0x000003ff7a097b98] = 88 metadata [0x000003ff7a097b98,0x000003ff7a097ba0] = 8 scopes data [0x000003ff7a097ba0,0x000003ff7a097bb8] = 24 scopes pcs [0x000003ff7a097bb8,0x000003ff7a097c08] = 80 dependencies [0x000003ff7a097c08,0x000003ff7a097c10] = 8 .................................................. -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1920913 Title: Openjdk11+ fails to install on s390x Status in QEMU: New Bug description: While installing openjdk11 or higher from repo, it crashes while configuring ca-certificates-java. Although `java -version` passes, `jar -version` crashes. Detailed logs attached to this issue. ``` # A fatal error has been detected by the Java Runtime Environment: # # SIGILL (0x4) at pc=0x00000040126f9980, pid=8425, tid=8430 # # JRE version: OpenJDK Runtime Environment (11.0.10+9) (build 11.0.10+9-Ubuntu-0ubuntu1.20.04) # Java VM: OpenJDK 64-Bit Server VM (11.0.10+9-Ubuntu-0ubuntu1.20.04, mixed mode, tiered, compressed oops, g1 gc, linux-s390x) # Problematic frame: # J 4 c1 java.lang.StringLatin1.hashCode([B)I java.base@11.0.10 (42 bytes) @ 0x00000040126f9980 [0x00000040126f9980+0x0000000000000000] # # Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport %p %s %c %d %P %E" (or dumping to //core.8425) # # An error report file with more information is saved as: # //hs_err_pid8425.log sed with "/usr/share/apport/apport %p %s %c %d %P %E" (or dumping to /root/core.10740) # # An error report file with more information is saved as: # /root/hs_err_pid10740.log ``` Observed this on s390x/ubuntu as well as s390x/alpine when run on amd64 host. Please note, on native s390x, the installation is successful. Also this crash is not observed while installing openjdk-8-jdk. Qemu version: 5.2.0 Please let me know if any more details are needed. To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1920913/+subscriptions