Assertion failure in ClearArray.java with -XX:+EnableX86EcoreOpts

XMLWordPrintable

    • x86_64
    • generic

      The attached Test.java (which is the same as compiler.c2.ClearArray but renamed) fails with the assertion below when running with the following flags on an AVX512 machine:
      $ java -XX:+EnableX86ECoreOpts -XX:MaxVectorSize=8 -XX:UseAVX=3 Test.java

      Original report:

      Command Line: make test CONF=fast TEST=test/hotspot/jtreg/compiler/c2/ClearArray.java JTREG="JAVA_OPTIONS=-XX:UseAVX=2 -XX:+EnableX86ECoreOpts"

      System : Granite Rapids

      Assertion Failure:
      command: main -XX:+UnlockDiagnosticVMOptions -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -Xbatch -XX:InitArrayShortSize=32768 -XX:MaxVectorSize=8 -XX:-IdealizeClearArrayNode -XX:UseAVX=3 compiler.c2.ClearArray
      reason: User specified action: run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -Xbatch -XX:InitArrayShortSize=32768 -XX:MaxVectorSize=8 -XX:-IdealizeClearArrayNode -XX:UseAVX=3 compiler.c2.ClearArray
      started: Tue Jan 06 05:34:11.183 UTC 2026
      Mode: othervm [/othervm specified]
      Process id: 3737516
      finished: Tue Jan 06 05:34:13.568 UTC 2026
      elapsed time (seconds): 2.385
      configuration:
      STDOUT:
      #
      # A fatal error has been detected by the Java Runtime Environment:
      #
      # Internal Error (/home/jbhateja/sandboxes/jdk/src/hotspot/cpu/x86/macroAssembler_x86.hpp:114), pid=3737516, tid=3737519
      # guarantee(this->is8bit(imm8)) failed: Short forward jump exceeds 8-bit offset at /home/jbhateja/sandboxes/jdk/src/hotspot/cpu/x86/macroAssembler_x86.cpp:5892
      #
      # JRE version: (27.0) (fastdebug build )
      # Java VM: OpenJDK 64-Bit Server VM (fastdebug 27-internal-adhoc.root.jdk, mixed mode, sharing, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
      # Problematic frame:
      # V [libjvm.so+0x7b8c8d] Label::patch_instructions(MacroAssembler*)+0x3bd
      #
      # Core dump will be written. Default location: Determined by the following: "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -F%F -- %E" (alternatively, falling back to /home/jbhateja/sandboxes/jdk/build/linux-x86_64-server-fastdebug/test-support/jtreg_test_hotspot_jtreg_compiler_c2_ClearArray_java/scratch/0/core.3737516)
      #
      # An error report file with more information is saved as:
      # /home/jbhateja/sandboxes/jdk/build/linux-x86_64-server-fastdebug/test-support/jtreg_test_hotspot_jtreg_compiler_c2_ClearArray_java/scratch/0/hs_err_pid3737516.log
      #
      #

      Stack: [0x00007fe21f9dd000,0x00007fe21fadd000], sp=0x00007fe21fad8e50, free space=1007k
      Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0x7540fd] Label::patch_instructions(MacroAssembler*)+0x3ad (macroAssembler_x86.hpp:114)
      V [libjvm.so+0x1640a18] MacroAssembler::generate_fill(BasicType, bool, Register, Register, Register, Register, XMMRegister)+0x8e8
      V [libjvm.so+0x1a7b257] StubGenerator::generate_fill(StubId)+0x107
      V [libjvm.so+0x1a8240b] StubGenerator::generate_arraycopy_stubs()+0x2bb
      V [libjvm.so+0x1a4fbe8] StubGenerator::generate_final_stubs()+0x28
      V [libjvm.so+0x1a51960] StubGenerator_generate(CodeBuffer*, BlobId)+0xb0
      V [libjvm.so+0x1ad2d52] initialize_stubs(BlobId, int, int, char const*, char const*, char const*) [clone .constprop.0]+0x242
      V [libjvm.so+0x1ad3578] final_stubs_init()+0x38
      V [libjvm.so+0x10730cd] init_globals2()+0x6d
      V [libjvm.so+0x1bbb4cf] Threads::create_vm(JavaVMInitArgs*, bool*)+0x3af
      V [libjvm.so+0x123ebe4] JNI_CreateJavaVM+0x54
      C [libjli.so+0x3e7f] JavaMain+0x8f
      C [libjli.so+0x8099] ThreadJavaMain+0x9

            Assignee:
            Volodymyr Paprotski
            Reporter:
            Jatin Bhateja
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: