Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8321599

Data loss in AVX3 Base64 decoding

    XMLWordPrintable

Details

    • b04
    • x86

    Backports

      Description

        Base64 appears to give different (wrong) results in some rare cases when AVX3 is enabled. This has been observed in one of our services.

        The attached reproducer fails reliably with -XX:UseAVX3 on my host with these CPU details (an AWS EC2 c6i.large instance):

        ```
        vendor_id : GenuineIntel
        cpu family : 6
        model : 106
        model name : Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz
        stepping : 6
        ```

        The same reproducer passes reliably with `-XX:UseAVX=2`.

        ```
        java -XX:UseAVX=2 Base64Avx3.java
        Test complete, no invalid decodes detected

        java -XX:UseAVX=3 Base64Avx3.java
        Exception in thread "main" java.lang.IllegalStateException: Mismatch for iouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/wABAgMEBQYHCAkKCwwNDg8QERITFBU=

        Expected:
        8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15

        Actual:
        8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14
        at Base64Avx3.decodeAndCheck(Base64Avx3.java:68)
        at Base64Avx3.main(Base64Avx3.java:55)
        ```

        It may be related to JDK-8268276.

        Note also that the bug requires that the CPU supports avx512bw *and* avx512vbmi.

        Attachments

          Issue Links

            Activity

              People

                sgibbons Scott Gibbons
                ogillespie Oli Gillespie
                Votes:
                0 Vote for this issue
                Watchers:
                11 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: