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

RISC-V: SIGBUS in updateBytesCRC32 after JDK-8339738

XMLWordPrintable

    • b23
    • riscv
    • linux

      JDK-8339738 adds vectorization for crc32 intrinsic, which does `vle32.v` from the input byte buffer
      and calculates the checksum. But the input byte buffer could be misaligned (not 4-byte aligned).
      This leads to SIGBUS on hardware platforms like `BPI-F3` board where misaligned vector loads are not
      supported. Similar issue is there for scalar version as well, which could mean performance issue on other
      hardwares. We can fix this issue by adding a small alignment processing on entry for both scalar and
      vector version.

      SIGBUS error when running SPECjbb2015 on `BPI-F3` board (Linux-6.6 kernel which automatically detects and turns on RVV extension)
      ----------------------------------------
      SPECjbb2015 Java Business Benchmark
       (c) Standard Performance Evaluation Corporation, 2015

      Preparing to launch All-in-one SPECjbb2015.

      Reading property file: /home/fyang/SPECjbb2015/24-11-03_094719/./config/specjbb2015.props

           0s: System.out.println: Using patched version parser in org/glassfish/grizzly/utils/JdkVersion.java
      System.out.println: Using patched version parser in org/glassfish/grizzly/utils/JdkVersion.java
      System.out.println: Using patched version parser in org/glassfish/grizzly/utils/JdkVersion.java
      Enumerating plugins...
           0s: Connectivity:
           1s: HTTP_Grizzly: Grizzly HTTP server, JDK HTTP client
           1s: NIO_Grizzly: Grizzly NIO server, Grizzly NIO client
           1s: HTTP_Jetty: Jetty HTTP server, JDK HTTP client
           1s: Snapshot:
           1s: InMemory: Stores snapshots in heap memory
           1s: Data Writers:
           1s: Demo: Send all frame to listener
           1s: InFile: Writing Data into file
           1s: Silent: Drop all frames
           1s:
           1s: Validating kit integrity...
           1s: #
      # A fatal error has been detected by the Java Runtime Environment:
      #
      # SIGBUS (0x7) at pc=0x0000003f7333804e, pid=1983, tid=1985
      #
      # JRE version: OpenJDK Runtime Environment (24.0) (build 24-testing-builds.shipilev.net-openjdk-jdk-b1983-20241102-1351)
      # Java VM: OpenJDK 64-Bit Server VM (24-testing-builds.shipilev.net-openjdk-jdk-b1983-20241102-1351, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-riscv64)
      # Problematic frame:
      # v ~StubRoutines::updateBytesCRC32 0x0000003f7333804e
      #
      # Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /home/fyang/SPECjbb2015/24-11-03_094719/core.1983)
      #
      # An error report file with more information is saved as:
      # /home/fyang/SPECjbb2015/24-11-03_094719/hs_err_pid1983.log
      [4.104s][warning][os] Loading hsdis library failed
      #
      # If you would like to submit a bug report, please visit:
      # https://bugreport.java.com/bugreport/crash.jsp
      #
      ----------------------------------------

            fyang Fei Yang
            fyang Fei Yang
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: