[aarch64-port-dev ] 8u-aarch64: Backport 8171537: aarch64: compiler/c1/Test6849574.java generates guarantee failure in C1
Andrew Dinn
adinn at redhat.com
Tue Aug 4 08:26:24 UTC 2020
Hi Felix,
Sure, it's ok to push this now.
regards,
Andrew Dinn
-----------
Red Hat Distinguished Engineer
Red Hat UK Ltd
Registered in England and Wales under Company Registration No. 03798903
Directors: Michael Cunningham, Michael ("Mike") O'Neill
On 03/08/2020 13:43, Yangfei (Felix) wrote:
> Hi,
>
> This 8u-aarch64 backport has been discussed and approved by aph before in:
> https://mail.openjdk.java.net/pipermail/aarch64-port-dev/2019-June/007463.html
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8171537
> Original jdk9 patch: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/a3bd5804b4be
> Original review thread: https://mail.openjdk.java.net/pipermail/aarch64-port-dev/2016-December/004036.html
>
> This bug is still reproducible with the following test (copied from test/hotspot/jtreg/compiler/c1/Test6849574.java in jdk9+):
>
> $ cat Test6849574.java
> import java.util.concurrent.atomic.AtomicReferenceArray;
>
> public class Test6849574 extends Thread {
>
> public static void main(String[] args) {
> AtomicReferenceArray a = new AtomicReferenceArray(10000);
> for (int i = 0; i < 100000; i++) {
> a.getAndSet(9999, new Object());
> if (i > 99990) System.gc();
> }
> }
> }
>
> $ java -XX:TieredStopAtLevel=1 -XX:MaxInlineSize=50 Test6849574
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> # Internal Error (assembler_aarch64.hpp:237), pid=2965, tid=0x0000fffebc4dd1e0
> # guarantee(val < (1U << nbits)) failed: Field too big for insn
> #
> # JRE version: OpenJDK Runtime Environment (8.0) (build 1.8.0-internal-yangfei_2020_08_03_20_20-b00)
> # Java VM: OpenJDK 64-Bit Server VM (25.71-b00 mixed mode linux-aarch64 compressed oops)
> # Core dump written. Default location: /home/yangfei/test/core or core.2965
> ......
>
> 8u-aarch64 backport is simpile:
> diff -r e385349cb315 src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp
> --- a/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Fri Jul 08 17:11:37 2016 +0100
> +++ b/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Mon Aug 03 20:36:04 2020 +0800
> @@ -3145,7 +3145,7 @@
> }
>
> void LIR_Assembler::atomic_op(LIR_Code code, LIR_Opr src, LIR_Opr data, LIR_Opr dest, LIR_Opr tmp_op) {
> - Address addr = as_Address(src->as_address_ptr(), noreg);
> + Address addr = as_Address(src->as_address_ptr());
> BasicType type = src->type();
> bool is_oop = type == T_OBJECT || type == T_ARRAY;
>
> Performed full jtreg test with aarch64 release build. Please take another look.
>
> Thanks,
> Felix
>
More information about the aarch64-port-dev
mailing list