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

Data loss in AVX3 Base64 decoding

XMLWordPrintable

    • b04
    • x86

        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.

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

                Created:
                Updated:
                Resolved: