-
Bug
-
Resolution: Fixed
-
P3
-
25
-
b05
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8362066 | 25.0.1 | Boris Ulasevich | P3 | Resolved | Fixed | b02 |
JDK-8361304 | 25 | Boris Ulasevich | P3 | Resolved | Fixed | b32 |
Single crash seen:
C [libc.so.6+0x15cae0] __strlen_avx2+0xc0
V [libjvm.so+0xacd22b] CodeCache::aggregate(outputStream*, unsigned long)+0x5b (codeCache.cpp:1878)
V [libjvm.so+0xb29a8a] CompileBroker::print_heapinfo(outputStream*, char const*, unsigned long)+0x8ea (compileBroker.cpp:2867)
The only use of strlen in this path is this JVMCI specific code https://github.com/openjdk/jdk/blob/master/src/hotspot/share/code/codeHeapState.cpp#L740
A bunch of nmethods are being flushed according to the log, which calls CodeBlob::purge which does this:
if (_mutable_data != blob_end()) {
os::free(_mutable_data);
_mutable_data = blob_end(); // Valid not null address
}
Since the JVMCI name is in the mutable section this breaks jvmci_name(), resulting in a crash. I'm not sure whether this is a problem with flushing itself or the safety of CodeHeapState::get_cbType not handling methods which are being flushed.
C [libc.so.6+0x15cae0] __strlen_avx2+0xc0
V [libjvm.so+0xacd22b] CodeCache::aggregate(outputStream*, unsigned long)+0x5b (codeCache.cpp:1878)
V [libjvm.so+0xb29a8a] CompileBroker::print_heapinfo(outputStream*, char const*, unsigned long)+0x8ea (compileBroker.cpp:2867)
The only use of strlen in this path is this JVMCI specific code https://github.com/openjdk/jdk/blob/master/src/hotspot/share/code/codeHeapState.cpp#L740
A bunch of nmethods are being flushed according to the log, which calls CodeBlob::purge which does this:
if (_mutable_data != blob_end()) {
os::free(_mutable_data);
_mutable_data = blob_end(); // Valid not null address
}
Since the JVMCI name is in the mutable section this breaks jvmci_name(), resulting in a crash. I'm not sure whether this is a problem with flushing itself or the safety of CodeHeapState::get_cbType not handling methods which are being flushed.
- backported by
-
JDK-8361304 [JVMCI] crash accessing nmethod::jvmci_name in CodeCache::aggregate
-
- Resolved
-
-
JDK-8362066 [JVMCI] crash accessing nmethod::jvmci_name in CodeCache::aggregate
-
- Resolved
-
- caused by
-
JDK-8343789 Move mutable nmethod data out of CodeCache
-
- Resolved
-
- links to
-
Commit(jdk25) openjdk/jdk/44f5dfef
-
Commit(master) openjdk/jdk/74822ce1
-
Review(jdk25) openjdk/jdk/26248
-
Review(master) openjdk/jdk25u/13
-
Review(master) openjdk/jdk/25608
(3 links to)