!34 I73E43:CDS SignedJar.java test fails due to archived Reference object
From: @kuenking111 Reviewed-by: @alexanderbill Signed-off-by: @alexanderbill
This commit is contained in:
commit
52b1f9671a
@ -0,0 +1,97 @@
|
|||||||
|
diff --git a/src/hotspot/share/cds/heapShared.cpp b/src/hotspot/share/cds/heapShared.cpp
|
||||||
|
index fd3d199f8..722c7e82e 100644
|
||||||
|
--- a/src/hotspot/share/cds/heapShared.cpp
|
||||||
|
+++ b/src/hotspot/share/cds/heapShared.cpp
|
||||||
|
@@ -171,6 +171,23 @@ void HeapShared::reset_archived_object_states(TRAPS) {
|
||||||
|
reset_states(SystemDictionary::java_platform_loader(), CHECK);
|
||||||
|
log_debug(cds)("Resetting system loader");
|
||||||
|
reset_states(SystemDictionary::java_system_loader(), CHECK);
|
||||||
|
+
|
||||||
|
+ // Clean up jdk.internal.loader.ClassLoaders::bootLoader(), which is not
|
||||||
|
+ // directly used for class loading, but rather is used by the core library
|
||||||
|
+ // to keep track of resources, etc, loaded by the null class loader.
|
||||||
|
+ //
|
||||||
|
+ // Note, this object is non-null, and is not the same as
|
||||||
|
+ // ClassLoaderData::the_null_class_loader_data()->class_loader(),
|
||||||
|
+ // which is null.
|
||||||
|
+ log_debug(cds)("Resetting boot loader");
|
||||||
|
+ JavaValue result(T_OBJECT);
|
||||||
|
+ JavaCalls::call_static(&result,
|
||||||
|
+ vmClasses::jdk_internal_loader_ClassLoaders_klass(),
|
||||||
|
+ vmSymbols::bootLoader_name(),
|
||||||
|
+ vmSymbols::void_BuiltinClassLoader_signature(),
|
||||||
|
+ CHECK);
|
||||||
|
+ Handle boot_loader(THREAD, result.get_oop());
|
||||||
|
+ reset_states(boot_loader(), CHECK);
|
||||||
|
}
|
||||||
|
|
||||||
|
HeapShared::ArchivedObjectCache* HeapShared::_archived_object_cache = NULL;
|
||||||
|
diff --git a/src/hotspot/share/classfile/javaClasses.cpp b/src/hotspot/share/classfile/javaClasses.cpp
|
||||||
|
index 793beb479..b21ab6eb6 100644
|
||||||
|
--- a/src/hotspot/share/classfile/javaClasses.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/javaClasses.cpp
|
||||||
|
@@ -5086,7 +5086,10 @@ bool JavaClasses::is_supported_for_archiving(oop obj) {
|
||||||
|
// constant pool entries, so excluding them shouldn't affect the archiving of static fields.
|
||||||
|
klass == vmClasses::ResolvedMethodName_klass() ||
|
||||||
|
klass == vmClasses::MemberName_klass() ||
|
||||||
|
- klass == vmClasses::Context_klass()) {
|
||||||
|
+ klass == vmClasses::Context_klass() ||
|
||||||
|
+ // It's problematic to archive Reference objects. One of the reasons is that
|
||||||
|
+ // Reference::discovered may pull in unwanted objects (see JDK-8284336)
|
||||||
|
+ klass->is_subclass_of(vmClasses::Reference_klass())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/vmSymbols.hpp b/src/hotspot/share/classfile/vmSymbols.hpp
|
||||||
|
index 79a6991b1..47f1f4119 100644
|
||||||
|
--- a/src/hotspot/share/classfile/vmSymbols.hpp
|
||||||
|
+++ b/src/hotspot/share/classfile/vmSymbols.hpp
|
||||||
|
@@ -401,6 +401,7 @@
|
||||||
|
template(deadChild_name, "deadChild") \
|
||||||
|
template(getFromClass_name, "getFromClass") \
|
||||||
|
template(dispatch_name, "dispatch") \
|
||||||
|
+ template(bootLoader_name, "bootLoader") \
|
||||||
|
template(getPlatformClassLoader_name, "getPlatformClassLoader") \
|
||||||
|
template(getSystemClassLoader_name, "getSystemClassLoader") \
|
||||||
|
template(fillInStackTrace_name, "fillInStackTrace") \
|
||||||
|
@@ -558,6 +559,7 @@
|
||||||
|
template(int_int_void_signature, "(II)V") \
|
||||||
|
template(long_long_void_signature, "(JJ)V") \
|
||||||
|
template(void_classloader_signature, "()Ljava/lang/ClassLoader;") \
|
||||||
|
+ template(void_BuiltinClassLoader_signature, "()Ljdk/internal/loader/BuiltinClassLoader;") \
|
||||||
|
template(void_object_signature, "()Ljava/lang/Object;") \
|
||||||
|
template(void_class_signature, "()Ljava/lang/Class;") \
|
||||||
|
template(void_class_array_signature, "()[Ljava/lang/Class;") \
|
||||||
|
diff --git a/src/java.base/share/classes/java/lang/ClassLoader.java b/src/java.base/share/classes/java/lang/ClassLoader.java
|
||||||
|
index 7ad0f6191..a1c5096d9 100644
|
||||||
|
--- a/src/java.base/share/classes/java/lang/ClassLoader.java
|
||||||
|
+++ b/src/java.base/share/classes/java/lang/ClassLoader.java
|
||||||
|
@@ -2701,7 +2701,9 @@ public abstract class ClassLoader {
|
||||||
|
* Called by the VM, during -Xshare:dump
|
||||||
|
*/
|
||||||
|
private void resetArchivedStates() {
|
||||||
|
- parallelLockMap.clear();
|
||||||
|
+ if (parallelLockMap != null) {
|
||||||
|
+ parallelLockMap.clear();
|
||||||
|
+ }
|
||||||
|
packages.clear();
|
||||||
|
package2certs.clear();
|
||||||
|
classes.clear();
|
||||||
|
diff --git a/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java b/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java
|
||||||
|
index cd7406ac5..1f7df7900 100644
|
||||||
|
--- a/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java
|
||||||
|
+++ b/src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
/*
|
||||||
|
- * Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
+ * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
*
|
||||||
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@@ -1083,5 +1083,6 @@ public class BuiltinClassLoader
|
||||||
|
// Called from VM only, during -Xshare:dump
|
||||||
|
private void resetArchivedStates() {
|
||||||
|
ucp = null;
|
||||||
|
+ resourceCache = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -885,7 +885,7 @@ Provides: java-src%{?1} = %{epoch}:%{version}-%{release}
|
|||||||
|
|
||||||
Name: java-%{javaver}-%{origin}
|
Name: java-%{javaver}-%{origin}
|
||||||
Version: %{newjavaver}.%{buildver}
|
Version: %{newjavaver}.%{buildver}
|
||||||
Release: 1
|
Release: 2
|
||||||
|
|
||||||
# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons
|
# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons
|
||||||
# and this change was brought into RHEL-4. java-1.5.0-ibm packages
|
# and this change was brought into RHEL-4. java-1.5.0-ibm packages
|
||||||
@ -980,6 +980,9 @@ Patch23: Apply-TBI-barrier-patch-to-C1.patch
|
|||||||
# 17.0.6
|
# 17.0.6
|
||||||
Patch24: 8275509-ModuleDescriptor.hashCode-isn-t-reproducible.patch
|
Patch24: 8275509-ModuleDescriptor.hashCode-isn-t-reproducible.patch
|
||||||
|
|
||||||
|
# 17.0.7
|
||||||
|
Patch25: 8284336_CDS_SignedJar_java_test_fails_due__to_archived_Reference_object.patch
|
||||||
|
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
BuildRequires: alsa-lib-devel
|
BuildRequires: alsa-lib-devel
|
||||||
@ -1218,6 +1221,7 @@ pushd %{top_level_dir_name}
|
|||||||
%patch22 -p1
|
%patch22 -p1
|
||||||
%patch23 -p1
|
%patch23 -p1
|
||||||
%patch24 -p1
|
%patch24 -p1
|
||||||
|
%patch25 -p1
|
||||||
popd # openjdk
|
popd # openjdk
|
||||||
|
|
||||||
# Extract systemtap tapsets
|
# Extract systemtap tapsets
|
||||||
@ -1767,6 +1771,9 @@ cjc.mainProgram(arg)
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue May 16 2023 kuenking111 <wangkun49@huawei.com> - 1:17.0.7.7-0.2
|
||||||
|
- add 8284336_CDS_SignedJar_java_test_fails_due__to_archived_Reference_object.patch
|
||||||
|
|
||||||
* Fri May 12 2023 misaka00251 <liuxin@iscas.ac.cn> - 1:17.0.7.7-0.1
|
* Fri May 12 2023 misaka00251 <liuxin@iscas.ac.cn> - 1:17.0.7.7-0.1
|
||||||
- Remove jdk17.0.6-ga source package
|
- Remove jdk17.0.6-ga source package
|
||||||
|
|
||||||
@ -1778,7 +1785,7 @@ cjc.mainProgram(arg)
|
|||||||
- modified Apply-TBI-to-ZGC-of-JDK17.patch
|
- modified Apply-TBI-to-ZGC-of-JDK17.patch
|
||||||
- add jdk17.0.7-ga
|
- add jdk17.0.7-ga
|
||||||
|
|
||||||
* Thu Mar 27 2023 crash888 <wangmengqi13@huawei.com> - 1:17.0.6.9-0.2
|
* Mon Mar 27 2023 crash888 <wangmengqi13@huawei.com> - 1:17.0.6.9-0.2
|
||||||
- add libstdc++-static and del --with-static++lib=dynamic
|
- add libstdc++-static and del --with-static++lib=dynamic
|
||||||
|
|
||||||
* Thu Mar 23 2023 crash888 <wangmengqi13@huawei.com> - 1:17.0.6.9-0.1
|
* Thu Mar 23 2023 crash888 <wangmengqi13@huawei.com> - 1:17.0.6.9-0.1
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user