RFR: 8282172: CompileBroker::log_metaspace_failure is called from non-compiler threads
Aleksey Shipilev
shade at openjdk.java.net
Mon Feb 21 11:28:14 UTC 2022
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](https://bugs.openjdk.java.net/browse/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
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
Additional testing:
- [x] Linux x86_64 fastdebug does not fail JDK-8282170 test anymore
-------------
Commit messages:
- Fix
Changes: https://git.openjdk.java.net/jdk/pull/7555/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7555&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8282172
Stats: 5 lines in 1 file changed: 5 ins; 0 del; 0 mod
Patch: https://git.openjdk.java.net/jdk/pull/7555.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/7555/head:pull/7555
PR: https://git.openjdk.java.net/jdk/pull/7555
More information about the hotspot-compiler-dev
mailing list