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

[lworld] C2 compilation fails with "unexpected yanked node"

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • repo-valhalla
    • repo-valhalla
    • hotspot

      compiler/valhalla/inlinetypes/TestGenerated.java fails with -XX:+UseAtomicValueFlattening

      # A fatal error has been detected by the Java Runtime Environment:
      #
      # Internal Error (/oracle/valhalla/open/src/hotspot/share/opto/postaloc.cpp:140), pid=3766156, tid=3766173
      # assert(false) failed: unexpected yanked node
      #
      # JRE version: Java(TM) SE Runtime Environment (25.0) (fastdebug build 25-lworld5ea-LTS-2025-04-22-0723438.tobias...)
      # Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 25-lworld5ea-LTS-2025-04-22-0723438.tobias..., mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
      # Problematic frame:
      # V [libjvm.so+0x17e3621] PhaseChaitin::yank_if_dead_recurse(Node*, Node*, Block*, Node_List*, Node_List*) [clone .part.0]+0x271

      Current CompileTask:
      C2:1917 656 b 4 compiler.valhalla.inlinetypes.TestGenerated::test11 (31 bytes)

      Stack: [0x000073e3bc100000,0x000073e3bc200000], sp=0x000073e3bc1fb7e0, free space=1005k
      Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0x17e3621] PhaseChaitin::yank_if_dead_recurse(Node*, Node*, Block*, Node_List*, Node_List*) [clone .part.0]+0x271 (postaloc.cpp:140)
      V [libjvm.so+0x17e6857] PhaseChaitin::post_allocate_copy_removal()+0x8f7 (chaitin.hpp:725)
      V [libjvm.so+0x9d0e14] PhaseChaitin::Register_Allocate()+0xd24 (chaitin.cpp:636)
      V [libjvm.so+0xb23dc9] Compile::Code_Gen()+0x729 (compile.cpp:3509)
      V [libjvm.so+0xb29288] Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x2148 (compile.cpp:917)
      V [libjvm.so+0x94eb7d] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x46d (c2compiler.cpp:142)
      V [libjvm.so+0xb37e32] CompileBroker::invoke_compiler_on_method(CompileTask*)+0xb22 (compileBroker.cpp:2307)
      V [libjvm.so+0xb38e38] CompileBroker::compiler_thread_loop()+0x588 (compileBroker.cpp:1951)
      V [libjvm.so+0x1092c5f] JavaThread::thread_main_inner()+0x12f (javaThread.cpp:773)
      V [libjvm.so+0x1ac15b6] Thread::call_run()+0xb6 (thread.cpp:231)
      V [libjvm.so+0x1747478] thread_native_entry(Thread*)+0x128 (os_linux.cpp:877)
      C [libc.so.6+0x9caa4]

      The problem is a DecodeN kept alive by a MemBarVolatile. This comes from 'InlineTypeNode::convert_from_payload'

      o183 ConvL2I === _ o182 [[ o184 ]] #int
      o184 CastI2N === o179 o183 [[ o419 ]]
      o419 DecodeN === _ o184 [[ o187 65 ]] #float[int:>=0] (java/lang/Cloneable,java/io/Serializable):exact *
      o187 MemBarVolatile === o179 o1 o180 o1 o1 o419 [[ o188 o189 64 ]]
       65 membar_volatile === 67 0 94 0 0 o419 [[ 66 ]] !jvms: TestGenerated::test11 @ bci:2 (line 201)

            thartmann Tobias Hartmann
            thartmann Tobias Hartmann
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: