8156137: SIGSEGV in ReceiverTypeData::clean_weak_klass_links

Process previous versions in Klass::clean_weak_klass_links()

Reviewed-by: coleenp, sspitsyn, stefank, dcubed
This commit is contained in:
Dean Long 2016-08-31 12:10:40 -07:00
parent b2c1c48604
commit 2baffbf490

View file

@ -431,6 +431,12 @@ void Klass::clean_weak_klass_links(BoolObjectClosure* is_alive, bool clean_alive
if (clean_alive_klasses && current->is_instance_klass()) {
InstanceKlass* ik = InstanceKlass::cast(current);
ik->clean_weak_instanceklass_links(is_alive);
// JVMTI RedefineClasses creates previous versions that are not in
// the class hierarchy, so process them here.
while ((ik = ik->previous_versions()) != NULL) {
ik->clean_weak_instanceklass_links(is_alive);
}
}
}
}