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

C2 Compiler gets stuck at 100% CPU all the time

XMLWordPrintable

    • x86_64
    • linux

      ADDITIONAL SYSTEM INFORMATION :
      jvm_args: -Dlog4j.configurationFile=/usr/local/conf/log4j.xml -DLogXML=/usr/local/conf/log4j.xml -D_USE_DB_TRACE=yes -Djava.library.path=/usr/local/cm/lib64 -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompilation -XX:+LogCompilation -XX:LogFile=/tmp/compilation.log -Xmx512m

      OS:AlmaLinux release 8.9 (Midnight Oncilla)

      uname:Linux 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64
      libc:glibc 2.28 NPTL 2.28
      rlimit: STACK 8192k, CORE infinity, NPROC 54786, NOFILE 64000, AS 10000000k
      load average:1.40 1.14 0.83

      A DESCRIPTION OF THE PROBLEM :
      we are using openjdk 1.8

      non -working version:-

      java-1.8.0-openjdk-devel-1.8.0.402.b06-2.el8.x86_64
      java-1.8.0-openjdk-headless-1.8.0.402.b06-2.el8.x86_64
      java-1.8.0-openjdk-1.8.0.402.b06-2.el8.x86_64

      Working version :-
      java-1.8.0-openjdk-devel-1.8.0.362.b09-2.el8_7.x86_64
      java-1.8.0-openjdk-headless-1.8.0.362.b09-2.el8_7.x86_64
      java-1.8.0-openjdk-1.8.0.362.b09-2.el8_7.x86_64


      we have started facing one high CPU issue( randomly) where JVM C2 compiler get stuck at processing something all the time consuming around 100% CPU for that process for an indefinite period. Unless we restart the jvm instance CPU never comes down and it always stays high with below Backtrace.
       
      [root@linuxbox log]# top -n 1 -H -p 403530
      top - 21:14:59 up 21:57, 4 users, load average: 1.15, 1.06, 0.77
      Threads: 21 total, 1 running, 20 sleeping, 0 stopped, 0 zombie
      %Cpu(s): 50.0 us, 3.3 sy, 0.0 ni, 46.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
      MiB Mem : 11717.7 total, 237.2 free, 5667.4 used, 5813.1 buff/cache
      MiB Swap: 4000.0 total, 2477.0 free, 1523.0 used. 5275.6 avail Mem

          PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
      403762 certbase 20 0 3177624 208368 16496 R 93.3 1.7 1082:07 C2 CompilerThre
      403530 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:02.78 Thread -- CN-In
      403557 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:00.19 GC task thread#
      403572 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:00.19 GC task thread#
      403602 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:01.39 VM Thread
      403618 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:00.00 Reference Handl
      403630 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:00.01 Finalizer
      403758 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:00.00 Signal Dispatch
      403776 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:02.19 C1 CompilerThre
      403834 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:00.00 Service Thread
      403838 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:23.15 VM Periodic Tas
      408405 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:00.05 Thread-1
      408449 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:00.02 Thread-2
      411653 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:00.36 BC FIPS Entropy
      415319 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:12.02 Thread-4
      415331 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:05.81 Thread-3
      415343 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:00.05 ConnectionPoolC
      415348 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:00.08 ConnectionClean
      415691 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:02.13 IfxSqliConnectC
      416517 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:06.35 Timer-0
      436026 certbase 20 0 3177624 208368 16496 S 0.0 1.7 0:00.06 Thread-12
       
      when I connect the gdb to this particular process 403762 it clearly states me that it is stuck more kind of an indefinite loop .

      (gdb) bt
      #0 0x00007f16751f23ff in PhaseIterGVN::remove_globally_dead_node(Node*) () from /usr/local/thirdparty/java/j2sdk/jre/lib/amd64/server/libjvm.so
      #1 0x00007f16752fcf01 in PhaseIdealLoop::do_split_if(Node*) () from /usr/local/thirdparty/java/j2sdk/jre/lib/amd64/server/libjvm.so
      #2 0x00007f167509c13b in PhaseIdealLoop::split_if_with_blocks(VectorSet&, Node_Stack&) () from /usr/local/thirdparty/java/j2sdk/jre/lib/amd64/server/libjvm.so
      #3 0x00007f16750967d0 in PhaseIdealLoop::build_and_optimize(bool, bool) () from /usr/local/thirdparty/java/j2sdk/jre/lib/amd64/server/libjvm.so
      #4 0x00007f1674cd4672 in Compile::Optimize() () from /usr/local/thirdparty/java/j2sdk/jre/lib/amd64/server/libjvm.so
      #5 0x00007f1674cd642b in Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool) () from /usr/local/thirdparty/java/j2sdk/jre/lib/amd64/server/libjvm.so
      #6 0x00007f1674c27476 in C2Compiler::compile_method(ciEnv*, ciMethod*, int) () from /usr/local/thirdparty/java/j2sdk/jre/lib/amd64/server/libjvm.so
      #7 0x00007f1674cdf885 in CompileBroker::invoke_compiler_on_method(CompileTask*) () from /usr/local/thirdparty/java/j2sdk/jre/lib/amd64/server/libjvm.so
      #8 0x00007f1674ce1c68 in CompileBroker::compiler_thread_loop() () from /usr/local/thirdparty/java/j2sdk/jre/lib/amd64/server/libjvm.so
      #9 0x00007f16753803bc in JavaThread::thread_main_inner() () from /usr/local/thirdparty/java/j2sdk/jre/lib/amd64/server/libjvm.so
      #10 0x00007f1675380729 in JavaThread::run() () from /usr/local/thirdparty/java/j2sdk/jre/lib/amd64/server/libjvm.so
      #11 0x00007f16751a05a2 in java_start(Thread*) () from /usr/local/thirdparty/java/j2sdk/jre/lib/amd64/server/libjvm.so
      #12 0x00007f16769fb1ca in start_thread () from /usr/lib64/libpthread.so.0
      #13 0x00007f1675c958d3 in clone () from /usr/lib64/libc.so.6



      REGRESSION : Last worked in version 8u421


      FREQUENCY : always


            Unassigned Unassigned
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated: