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

CompileBroker::log_metaspace_failure is called from non-Java/compiler threads

XMLWordPrintable

    • b12

        In several places in hotspot, we call CompileBroker::log_metaspace_failure(). I believe the intent is to call it from compiler threads only, because it ends up calling:

          void log_metaspace_failure(const char* reason) {
            ResourceMark rm;
            StringLogMessage lm;
            lm.print("%4d COMPILE PROFILING SKIPPED: %s", -1, reason);
            lm.print("\n");
            log(JavaThread::current(), "%s", (const char*)lm);
          }

        ...which would fail the cast in `JavaThread::current()` if current thread is not Java thread (compiler threads are Java threads too).

        It clearly manifests on JDK-8282170 test:

        12700 breakpoints set
        12800 breakpoints set
        12900 breakpoints set
        13000 breakpoints set
        # To suppress the following error report, specify this argument
        # after -XX: or in .hotspotrc: SuppressErrorAt=/thread.hpp:1458
        #
        # A fatal error has been detected by the Java Runtime Environment:
        #
        # Internal Error (/home/shade/trunks/jdk/src/hotspot/share/runtime/thread.hpp:1458), pid=889379, tid=889389
        # assert(t->is_Java_thread()) failed: incorrect cast to JavaThread


        Current thread (0x00007f696c20ba30): VMThread "VM Thread" [stack: 0x00007f694f5a5000,0x00007f694f6a5000] [id=889389]

        Stack: [0x00007f694f5a5000,0x00007f694f6a5000], sp=0x00007f694f6a3510, free space=1017k
        Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
        V [libjvm.so+0xacfad4] CompilationLog::log_metaspace_failure(char const*)+0x494
        V [libjvm.so+0xac84b0] CompileBroker::log_metaspace_failure()+0x20
        V [libjvm.so+0x15069e9] Method::build_method_counters(Thread*, Method*)+0x119
        V [libjvm.so+0x150851b] BreakpointInfo::set(Method*)+0xfb
        V [libjvm.so+0x127d5ea] JvmtiBreakpoint::each_method_version_do(void (Method::*)(int))+0x5a
        V [libjvm.so+0x1b342ae] VM_Operation::evaluate()+0x18e
        V [libjvm.so+0x1b581f7] VMThread::evaluate_operation(VM_Operation*)+0x1f7
        V [libjvm.so+0x1b5925f] VMThread::inner_execute(VM_Operation*)+0x41f
        V [libjvm.so+0x1b59425] VMThread::loop()+0xb5
        V [libjvm.so+0x1b59548] VMThread::run()+0xb8
        V [libjvm.so+0x1a450d4] Thread::call_run()+0x104
        V [libjvm.so+0x161b3fc] thread_native_entry(Thread*)+0x10c

              shade Aleksey Shipilev
              shade Aleksey Shipilev
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

                Created:
                Updated:
                Resolved: