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

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

    XMLWordPrintable

Details

    • b20

    Backports

      Description

        The attached fuzzer test fails with the following assertion.

        To reproduce:
        $ java -Xmx1G -Xcomp -Xbatch -XX:-TieredCompilation -XX:CompileOnly=Test Test.java

        # A fatal error has been detected by the Java Runtime Environment:
        #
        # Internal Error (/home/christian/jdk/open/src/hotspot/share/opto/node.cpp:89), pid=4863, tid=4904
        # assert(C->live_nodes() <= C->max_node_limit()) failed: Live Node limit exceeded limit
        #
        # JRE version: Java(TM) SE Runtime Environment (16.0) (slowdebug build 16-internal+0-2020-09-01-1328362.christian...)
        # Java VM: Java HotSpot(TM) 64-Bit Server VM (slowdebug 16-internal+0-2020-09-01-1328362.christian..., compiled mode, compressed oops, g1 gc, linux-amd64)
        # Problematic frame:
        # V [libjvm.so+0xe68f56] Node::verify_construction()+0x17c
        ..........
        Command Line: -Xmx1G -Xcomp -Xbatch -XX:-TieredCompilation -XX:CompileOnly=Test --add-modules=ALL-DEFAULT jdk.compiler/com.sun.tools.javac.launcher.Main Test.java
        ..........
        Current thread (0x00007f2b6833f3c0): JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=4904, stack(0x00007f2b51cfd000,0x00007f2b51dfe000)]


        Current CompileTask:
        C2: 12460 122 b Test::vMeth (243 bytes)

        Stack: [0x00007f2b51cfd000,0x00007f2b51dfe000], sp=0x00007f2b51df58d0, free space=994k
        Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
        V [libjvm.so+0xe68f56] Node::verify_construction()+0x17c
        V [libjvm.so+0xe69d08] Node::Node(unsigned int)+0xb8
        V [libjvm.so+0x41a754] TypeNode::TypeNode(Type const*, unsigned int)+0x24
        V [libjvm.so+0x6e4da0] ConvI2LNode::ConvI2LNode(Node*, TypeLong const*)+0x2c
        V [libjvm.so+0x6dfdbc] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x108
        V [libjvm.so+0x720263] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x7ab
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x7202de] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x826
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x7202de] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x826
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x7202de] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x826
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x720263] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x7ab
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x7202de] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x826
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x7202de] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x826
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x7202de] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x826
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x720263] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x7ab
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x720263] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x7ab
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x7202de] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x826
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x7202de] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x826
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x7202de] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x826
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x720263] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x7ab
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x720263] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x7ab
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x7202de] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x826
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x7202de] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x826
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x720263] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x7ab
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf14810] PhaseIterGVN::transform(Node*)+0x9e
        V [libjvm.so+0x6dfdc9] Compile::constrained_convI2L(PhaseGVN*, Node*, TypeInt const*, Node*)+0x115
        V [libjvm.so+0x720263] ConvI2LNode::Ideal(PhaseGVN*, bool)+0x7ab
        V [libjvm.so+0xf131f1] PhaseGVN::apply_ideal(Node*, bool)+0x6f
        V [libjvm.so+0xf14919] PhaseIterGVN::transform_old(Node*)+0x105
        V [libjvm.so+0xf146a2] PhaseIterGVN::optimize()+0x148
        V [libjvm.so+0xd218b7] PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0x1879
        ...<more frames>...

        Attachments

          1. TestReduced.java
            0.5 kB
          2. Test.java
            9 kB
          3. replay_pid4863.log
            178 kB
          4. hs_err_pid4863.log
            90 kB

          Issue Links

            Activity

              People

                rcastanedalo Roberto Castaneda Lozano
                chagedorn Christian Hagedorn
                Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: