From bf0debc023a42ccdf2f589039e4d98e11424b4dd Mon Sep 17 00:00:00 2001 From: Matias Saavedra Silva Date: Thu, 5 Dec 2024 20:08:31 +0000 Subject: [PATCH] 8343890: SEGV crash in RunTimeClassInfo::klass Reviewed-by: iklam, ccheung --- src/hotspot/share/cds/runTimeClassInfo.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/hotspot/share/cds/runTimeClassInfo.cpp b/src/hotspot/share/cds/runTimeClassInfo.cpp index 0acd89b5bce..e2d41cd1de2 100644 --- a/src/hotspot/share/cds/runTimeClassInfo.cpp +++ b/src/hotspot/share/cds/runTimeClassInfo.cpp @@ -76,10 +76,13 @@ void RunTimeClassInfo::init(DumpTimeClassInfo& info) { } InstanceKlass* RunTimeClassInfo::klass() const { - if (ArchiveBuilder::is_active() && ArchiveBuilder::current()->is_in_buffer_space((address)this)) { - return ArchiveBuilder::current()->offset_to_buffered(_klass_offset); - } else { + if (MetaspaceShared::is_in_shared_metaspace(this)) { + // is inside a mmaped CDS archive. return ArchiveUtils::offset_to_archived_address(_klass_offset); + } else { + // is a temporary copy of a RunTimeClassInfo that's being initialized + // by the ArchiveBuilder. + return ArchiveBuilder::current()->offset_to_buffered(_klass_offset); } }