Skip to content

Commit 8277350

Browse files
coleenppull[bot]
authored andcommitted
8316711: SEGV in LoaderConstraintTable::find_loader_constraint after JDK-8310874
Reviewed-by: dcubed, iklam
1 parent 7ef97c7 commit 8277350

File tree

2 files changed

+3
-4
lines changed

2 files changed

+3
-4
lines changed

src/hotspot/share/classfile/loaderConstraints.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@ InstanceKlass* LoaderConstraintTable::find_constrained_klass(Symbol* name,
448448
void LoaderConstraintTable::remove_failed_loaded_klass(InstanceKlass* klass,
449449
ClassLoaderData* loader) {
450450

451+
MutexLocker ml(SystemDictionary_lock);
451452
Symbol* name = klass->name();
452453
LoaderConstraint *p = find_loader_constraint(name, loader);
453454
if (p != nullptr && p->klass() != nullptr && p->klass() == klass) {

src/hotspot/share/classfile/systemDictionary.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1524,12 +1524,10 @@ InstanceKlass* SystemDictionary::find_or_define_instance_class(Symbol* class_nam
15241524
assert(defined_k != nullptr, "Should have a klass if there's no exception");
15251525
k->class_loader_data()->add_to_deallocate_list(k);
15261526
} else if (HAS_PENDING_EXCEPTION) {
1527+
// Remove this InstanceKlass from the LoaderConstraintTable if added.
1528+
LoaderConstraintTable::remove_failed_loaded_klass(k, class_loader_data(class_loader));
15271529
assert(defined_k == nullptr, "Should not have a klass if there's an exception");
15281530
k->class_loader_data()->add_to_deallocate_list(k);
1529-
1530-
// Also remove this InstanceKlass from the LoaderConstraintTable if added.
1531-
MutexLocker ml(SystemDictionary_lock);
1532-
LoaderConstraintTable::remove_failed_loaded_klass(k, class_loader_data(class_loader));
15331531
}
15341532
return defined_k;
15351533
}

0 commit comments

Comments
 (0)