Skip to content

Commit 7a7b1e5

Browse files
author
Matias Saavedra Silva
committed
8315890: Attempts to load from nullptr in instanceKlass.cpp and unsafe.cpp
Reviewed-by: coleenp, ccheung, dholmes
1 parent cb20a3e commit 7a7b1e5

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

src/hotspot/share/cds/archiveBuilder.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1133,6 +1133,7 @@ class ArchiveBuilder::CDSMapLogger : AllStatic {
11331133
// The address of _source_obj at runtime
11341134
oop requested_obj = ArchiveHeapWriter::source_obj_to_requested_obj(_source_obj);
11351135
// The address of this field in the requested space
1136+
assert(requested_obj != nullptr, "Attempting to load field from null oop");
11361137
address requested_field_addr = cast_from_oop<address>(requested_obj) + fd->offset();
11371138

11381139
fd->print_on(_st);

src/hotspot/share/oops/instanceKlass.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -2503,10 +2503,11 @@ void InstanceKlass::clean_implementors_list() {
25032503
assert (ClassUnloading, "only called for ClassUnloading");
25042504
for (;;) {
25052505
// Use load_acquire due to competing with inserts
2506-
InstanceKlass* impl = Atomic::load_acquire(adr_implementor());
2506+
InstanceKlass* volatile* iklass = adr_implementor();
2507+
assert(iklass != nullptr, "Klass must not be null");
2508+
InstanceKlass* impl = Atomic::load_acquire(iklass);
25072509
if (impl != nullptr && !impl->is_loader_alive()) {
25082510
// null this field, might be an unloaded instance klass or null
2509-
InstanceKlass* volatile* iklass = adr_implementor();
25102511
if (Atomic::cmpxchg(iklass, impl, (InstanceKlass*)nullptr) == impl) {
25112512
// Successfully unlinking implementor.
25122513
if (log_is_enabled(Trace, class, unload)) {

0 commit comments

Comments
 (0)