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

[lworld] C2: assert(C->live_nodes() <= C->max_node_limit()) failed: Live Node limit exceeded limit

XMLWordPrintable

      The attached test generates too many nodes during parsing without checking the node limit. As a result, we fail with an assertion (bailout in product).

      To reproduce:
      $ jcval --enable-preview Test.java && jfval --enable-preview -Xcomp -XX:CompileOnly=Test*::test* Test

      #
      # A fatal error has been detected by the Java Runtime Environment:
      #
      # Internal Error (/opt/mach5/mesos/work_dir/slaves/526fbd26-20de-495c-9a19-a04adc16f7d1-S15416/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/ca83e3d5-fac5-4994-9554-60e6af4907db/runs/0ad57fee-9602-4038-a969-a8b8fd9ada7a/workspace/open/src/hotspot/share/opto/node.cpp:79), pid=478258, tid=478277
      # assert(C->live_nodes() <= C->max_node_limit()) failed: Live Node limit exceeded limit
      #
      # JRE version: Java(TM) SE Runtime Environment (26.0+1) (fastdebug build 26-valhalla+1-113)
      # Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 26-valhalla+1-113, compiled mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
      # Problematic frame:
      # V [libjvm.so+0x1819737] Node::verify_construction()+0x1a7
      ..............
      Command Line: --enable-preview -Xcomp -XX:CompileOnly=Test*::test* Test
      ..............
      Current CompileTask:
      C2:246 30 b 4 Test::test (9 bytes)

      Stack: [0x00007f34f4b6c000,0x00007f34f4c6c000], sp=0x00007f34f4c5c9d0, free space=962k
      Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0x1819737] Node::verify_construction()+0x1a7 (node.cpp:79)
      V [libjvm.so+0x181a463] Node::Node(unsigned int)+0x43
      V [libjvm.so+0xa3f252] PhiNode::make(Node*, Node*, Type const*, TypePtr const*)+0x62
      V [libjvm.so+0x10cf53c] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x69c
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      V [libjvm.so+0x10cf0f0] InlineTypeNode::clone_with_phis(PhaseGVN*, Node*, SafePointNode*, bool, bool)+0x250
      ...<more frames>...

            Unassigned Unassigned
            chagedorn Christian Hagedorn
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: