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

CTW: C2 (Shenandoah) compilation fails with SEGV due to unhandled catchproj == NULL

    XMLWordPrintable

    Details

    • Subcomponent:
      gc
    • Resolved In Build:
      b13

      Description

      [You probably need JDK-8251526 to compile CTW in current jdk/jdk]

      $ cd test/hotspot/jtreg/testlibrary/ctw
      $ make
      $ cd dist
      $ wget https://repo1.maven.org/maven2/org/gridgain/gridgain-core/6.6.8-p1/gridgain-core-6.6.8-p1.jar
      $ export JAVA_HOME=<point to fastdebug build>
      $ JAVA_OPTIONS="-XX:+UseShenandoahGC" ./ctw.sh https://repo1.maven.org/maven2/org/gridgain/gridgain-core/6.6.8-p1/gridgain-core-6.6.8-p1.jar

      # SIGSEGV (0xb) at pc=0x00007fa36cc148bb, pid=1666402, tid=1666484
      #
      # JRE version: OpenJDK Runtime Environment (16.0) (fastdebug build 16-internal+0-adhoc.shade.jdk-jdk)
      # Java VM: OpenJDK 64-Bit Server VM (fastdebug 16-internal+0-adhoc.shade.jdk-jdk, mixed mode, sharing, tiered, compressed oops, shenandoah gc, linux-amd64)
      # Problematic frame:
      # V [libjvm.so+0x17078bb] PhaseIdealLoop::register_new_node(Node*, Node*)+0x6b
      #

      Current CompileTask:
      C2: 30963 43589 !b 4 org.gridgain.grid.kernal.processors.cache.GridCacheEntryImpl::peek0 (607 bytes)

      Stack: [0x00007fa236fe1000,0x00007fa2370e2000], sp=0x00007fa2370db840, free space=1002k
      Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0x17078bb] PhaseIdealLoop::register_new_node(Node*, Node*)+0x6b
      V [libjvm.so+0x16d2b56] ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop*)+0xd76
      V [libjvm.so+0x15f5774] ShenandoahBarrierSetC2::optimize_loops(PhaseIdealLoop*, LoopOptsMode, VectorSet&, Node_Stack&, Node_List&) const+0x44
      V [libjvm.so+0x11daeeb] PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0xf2b
      V [libjvm.so+0x16c7e32] ShenandoahBarrierC2Support::expand(Compile*, PhaseIterGVN&)+0x202
      V [libjvm.so+0x15f5643] ShenandoahBarrierSetC2::expand_barriers(Compile*, PhaseIterGVN&) const+0x13
      V [libjvm.so+0x932038] Compile::Optimize()+0x10b8
      V [libjvm.so+0x9336e0] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0x1500
      V [libjvm.so+0x780888] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x188
      V [libjvm.so+0x941319] CompileBroker::invoke_compiler_on_method(CompileTask*)+0xbe9
      V [libjvm.so+0x941ec0] CompileBroker::compiler_thread_loop()+0x620
      V [libjvm.so+0x184d16f] JavaThread::thread_main_inner()+0x23f
      V [libjvm.so+0x1852634] Thread::call_run()+0x104

      I believe that is because we are passing NULL ctrl to register_new_node after extracting projections here:

      diff -r 493922f37d81 src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
      --- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Thu Aug 13 00:20:42 2020 -0400
      +++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Thu Aug 13 11:06:04 2020 +0200
      @@ -1183,10 +1183,12 @@
               continue;
             }
             CallProjections projs;
             call->extract_projections(&projs, false, false);
       
      + assert(projs.catchall_catchproj != NULL, "Should be testing this?");
      +
       #ifdef ASSERT
             VectorSet cloned;
       #endif
             Node* lrb_clone = lrb->clone();
             phase->register_new_node(lrb_clone, projs.catchall_catchproj); // <--- passing NULL

      This new assert reliably fails on the same test:

      # Internal Error (/home/shade/trunks/jdk-jdk/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp:1188), pid=1669278, tid=1669324
      # assert(projs.catchall_catchproj != __null) failed: Should be testing this?
      #
      # JRE version: OpenJDK Runtime Environment (16.0) (fastdebug build 16-internal+0-adhoc.shade.jdk-jdk)
      # Java VM: OpenJDK 64-Bit Server VM (fastdebug 16-internal+0-adhoc.shade.jdk-jdk, mixed mode, sharing, tiered, compressed oops, shenandoah gc, linux-amd64)
      # Problematic frame:
      # V [libjvm.so+0x16d6a19] ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop*)+0x4b39

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              roland Roland Westrelin
              Reporter:
              shade Aleksey Shipilev
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: