#I70J8T:upgrade to jdk8u372-ga
This commit is contained in:
parent
45fb0cbe1e
commit
af93387ddf
303
8057743-process-Synchronize-exiting-of-threads-and-p.patch
Normal file
303
8057743-process-Synchronize-exiting-of-threads-and-p.patch
Normal file
@ -0,0 +1,303 @@
|
||||
From 120367d947c297709134167d3e4d8e1b91fe97f3 Mon Sep 17 00:00:00 2001
|
||||
From: z30010524 <zhangyunbo7@huawei.com>
|
||||
Date: Tue, 14 Mar 2023 19:17:50 +0800
|
||||
Subject: [PATCH 10/15] 8057743: (process) Synchronize exiting of threads and
|
||||
process [win]
|
||||
|
||||
DTS/AR: DTS2023031516597
|
||||
Summary: <JDK> :8057744: (process) Synchronize exiting of threads and process [win]
|
||||
LLT: NA
|
||||
Patch Type: backport
|
||||
Bug url: https://bugs.openjdk.org/browse/JDK-8057744
|
||||
---
|
||||
hotspot/src/os/aix/vm/os_aix.inline.hpp | 5 ++
|
||||
hotspot/src/os/bsd/vm/os_bsd.inline.hpp | 4 +
|
||||
hotspot/src/os/linux/vm/os_linux.inline.hpp | 4 +
|
||||
.../src/os/solaris/vm/os_solaris.inline.hpp | 5 ++
|
||||
hotspot/src/os/windows/vm/os_windows.cpp | 87 +++++++++++++++++--
|
||||
hotspot/src/os/windows/vm/os_windows.hpp | 10 +++
|
||||
.../src/os/windows/vm/os_windows.inline.hpp | 4 +
|
||||
hotspot/src/share/vm/runtime/java.cpp | 2 +-
|
||||
hotspot/src/share/vm/runtime/os.hpp | 4 +-
|
||||
9 files changed, 115 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/hotspot/src/os/aix/vm/os_aix.inline.hpp b/hotspot/src/os/aix/vm/os_aix.inline.hpp
|
||||
index 421ea342e..afa034411 100644
|
||||
--- a/hotspot/src/os/aix/vm/os_aix.inline.hpp
|
||||
+++ b/hotspot/src/os/aix/vm/os_aix.inline.hpp
|
||||
@@ -245,4 +245,9 @@ inline int os::set_sock_opt(int fd, int level, int optname,
|
||||
const char* optval, socklen_t optlen) {
|
||||
return ::setsockopt(fd, level, optname, optval, optlen);
|
||||
}
|
||||
+
|
||||
+inline void os::exit(int num) {
|
||||
+ ::exit(num);
|
||||
+}
|
||||
+
|
||||
#endif // OS_AIX_VM_OS_AIX_INLINE_HPP
|
||||
diff --git a/hotspot/src/os/bsd/vm/os_bsd.inline.hpp b/hotspot/src/os/bsd/vm/os_bsd.inline.hpp
|
||||
index c35abf486..1eff6b724 100644
|
||||
--- a/hotspot/src/os/bsd/vm/os_bsd.inline.hpp
|
||||
+++ b/hotspot/src/os/bsd/vm/os_bsd.inline.hpp
|
||||
@@ -247,4 +247,8 @@ inline int os::set_sock_opt(int fd, int level, int optname,
|
||||
return ::setsockopt(fd, level, optname, optval, optlen);
|
||||
}
|
||||
|
||||
+inline void os::exit(int num) {
|
||||
+ ::exit(num);
|
||||
+}
|
||||
+
|
||||
#endif // OS_BSD_VM_OS_BSD_INLINE_HPP
|
||||
diff --git a/hotspot/src/os/linux/vm/os_linux.inline.hpp b/hotspot/src/os/linux/vm/os_linux.inline.hpp
|
||||
index a23bd5631..eb8c8ca1b 100644
|
||||
--- a/hotspot/src/os/linux/vm/os_linux.inline.hpp
|
||||
+++ b/hotspot/src/os/linux/vm/os_linux.inline.hpp
|
||||
@@ -240,4 +240,8 @@ inline int os::set_sock_opt(int fd, int level, int optname,
|
||||
return ::setsockopt(fd, level, optname, optval, optlen);
|
||||
}
|
||||
|
||||
+inline void os::exit(int num) {
|
||||
+ ::exit(num);
|
||||
+}
|
||||
+
|
||||
#endif // OS_LINUX_VM_OS_LINUX_INLINE_HPP
|
||||
diff --git a/hotspot/src/os/solaris/vm/os_solaris.inline.hpp b/hotspot/src/os/solaris/vm/os_solaris.inline.hpp
|
||||
index 8e095ab69..aad6debf9 100644
|
||||
--- a/hotspot/src/os/solaris/vm/os_solaris.inline.hpp
|
||||
+++ b/hotspot/src/os/solaris/vm/os_solaris.inline.hpp
|
||||
@@ -223,4 +223,9 @@ inline int os::set_sock_opt(int fd, int level, int optname,
|
||||
const char *optval, socklen_t optlen) {
|
||||
return ::setsockopt(fd, level, optname, optval, optlen);
|
||||
}
|
||||
+
|
||||
+inline void os::exit(int num) {
|
||||
+ ::exit(num);
|
||||
+}
|
||||
+
|
||||
#endif // OS_SOLARIS_VM_OS_SOLARIS_INLINE_HPP
|
||||
diff --git a/hotspot/src/os/windows/vm/os_windows.cpp b/hotspot/src/os/windows/vm/os_windows.cpp
|
||||
index 11bd14f6f..f0bc733c2 100644
|
||||
--- a/hotspot/src/os/windows/vm/os_windows.cpp
|
||||
+++ b/hotspot/src/os/windows/vm/os_windows.cpp
|
||||
@@ -22,8 +22,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
-// Must be at least Windows 2000 or XP to use IsDebuggerPresent
|
||||
-#define _WIN32_WINNT 0x500
|
||||
+// Must be at least Windows Vista or Server 2008 to use InitOnceExecuteOnce
|
||||
+#define _WIN32_WINNT 0x0600
|
||||
|
||||
// no precompiled headers
|
||||
#include "classfile/classLoader.hpp"
|
||||
@@ -432,6 +432,11 @@ static unsigned __stdcall java_start(Thread* thread) {
|
||||
}
|
||||
}
|
||||
|
||||
+ // Diagnostic code to investigate JDK-6573254
|
||||
+ int res = 90115; // non-java thread
|
||||
+ if (thread->is_Java_thread()) {
|
||||
+ res = 60115; // java thread
|
||||
+ }
|
||||
|
||||
// Install a win32 structured exception handler around every thread created
|
||||
// by VM, so VM can genrate error dump when an exception occurred in non-
|
||||
@@ -450,7 +455,9 @@ static unsigned __stdcall java_start(Thread* thread) {
|
||||
Atomic::dec_ptr((intptr_t*)&os::win32::_os_thread_count);
|
||||
}
|
||||
|
||||
- return 0;
|
||||
+ // Thread must not return from exit_process_or_thread(), but if it does,
|
||||
+ // let it proceed to exit normally
|
||||
+ return (unsigned)os::win32::exit_process_or_thread(os::win32::EPT_THREAD, res);
|
||||
}
|
||||
|
||||
static OSThread* create_os_thread(Thread* thread, HANDLE thread_handle, int thread_id) {
|
||||
@@ -1082,15 +1089,13 @@ void os::abort(bool dump_core, void* siginfo, void* context) {
|
||||
win32::exit_process_or_thread(win32::EPT_PROCESS, 1);
|
||||
}
|
||||
|
||||
-
|
||||
-void os::abort(bool dump_core)
|
||||
-{
|
||||
+void os::abort(bool dump_core) {
|
||||
abort(dump_core, NULL, NULL);
|
||||
}
|
||||
|
||||
// Die immediately, no exit hook, no abort hook, no cleanup.
|
||||
void os::die() {
|
||||
- _exit(-1);
|
||||
+ win32::exit_process_or_thread(win32::EPT_PROCESS_DIE, -1);
|
||||
}
|
||||
|
||||
// Directory routines copied from src/win32/native/java/io/dirent_md.c
|
||||
@@ -3857,6 +3862,11 @@ bool os::win32::_is_nt = false;
|
||||
bool os::win32::_is_windows_2003 = false;
|
||||
bool os::win32::_is_windows_server = false;
|
||||
|
||||
+// 6573254
|
||||
+// Currently, the bug is observed across all the supported Windows releases,
|
||||
+// including the latest one (as of this writing - Windows Server 2012 R2)
|
||||
+bool os::win32::_has_exit_bug = true;
|
||||
+
|
||||
void os::win32::initialize_system_info() {
|
||||
SYSTEM_INFO si;
|
||||
GetSystemInfo(&si);
|
||||
@@ -3951,6 +3961,69 @@ HINSTANCE os::win32::load_Windows_dll(const char* name, char *ebuf, int ebuflen)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+#define MIN_EXIT_MUTEXES 1
|
||||
+#define MAX_EXIT_MUTEXES 16
|
||||
+
|
||||
+struct ExitMutexes {
|
||||
+ DWORD count;
|
||||
+ HANDLE handles[MAX_EXIT_MUTEXES];
|
||||
+};
|
||||
+
|
||||
+static BOOL CALLBACK init_muts_call(PINIT_ONCE, PVOID ppmuts, PVOID*) {
|
||||
+ static ExitMutexes muts;
|
||||
+
|
||||
+ muts.count = os::processor_count();
|
||||
+ if (muts.count < MIN_EXIT_MUTEXES) {
|
||||
+ muts.count = MIN_EXIT_MUTEXES;
|
||||
+ } else if (muts.count > MAX_EXIT_MUTEXES) {
|
||||
+ muts.count = MAX_EXIT_MUTEXES;
|
||||
+ }
|
||||
+
|
||||
+ for (DWORD i = 0; i < muts.count; ++i) {
|
||||
+ muts.handles[i] = CreateMutex(NULL, FALSE, NULL);
|
||||
+ if (muts.handles[i] == NULL) {
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ }
|
||||
+ *((ExitMutexes**)ppmuts) = &muts;
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
+int os::win32::exit_process_or_thread(Ept what, int exit_code) {
|
||||
+ if (os::win32::has_exit_bug()) {
|
||||
+ static INIT_ONCE init_once_muts = INIT_ONCE_STATIC_INIT;
|
||||
+ static ExitMutexes* pmuts;
|
||||
+
|
||||
+ if (!InitOnceExecuteOnce(&init_once_muts, init_muts_call, &pmuts, NULL)) {
|
||||
+ warning("ExitMutex initialization failed in %s: %d\n", __FILE__, __LINE__);
|
||||
+ } else if (WaitForMultipleObjects(pmuts->count, pmuts->handles,
|
||||
+ (what != EPT_THREAD), // exiting process waits for all mutexes
|
||||
+ INFINITE) == WAIT_FAILED) {
|
||||
+ warning("ExitMutex acquisition failed in %s: %d\n", __FILE__, __LINE__);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ switch (what) {
|
||||
+ case EPT_THREAD:
|
||||
+ _endthreadex((unsigned)exit_code);
|
||||
+ break;
|
||||
+
|
||||
+ case EPT_PROCESS:
|
||||
+ ::exit(exit_code);
|
||||
+ break;
|
||||
+
|
||||
+ case EPT_PROCESS_DIE:
|
||||
+ _exit(exit_code);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ // should not reach here
|
||||
+ return exit_code;
|
||||
+}
|
||||
+
|
||||
+#undef MIN_EXIT_MUTEXES
|
||||
+#undef MAX_EXIT_MUTEXES
|
||||
+
|
||||
void os::win32::setmode_streams() {
|
||||
_setmode(_fileno(stdin), _O_BINARY);
|
||||
_setmode(_fileno(stdout), _O_BINARY);
|
||||
diff --git a/hotspot/src/os/windows/vm/os_windows.hpp b/hotspot/src/os/windows/vm/os_windows.hpp
|
||||
index 20e2ca2f5..3fdc9bcd6 100644
|
||||
--- a/hotspot/src/os/windows/vm/os_windows.hpp
|
||||
+++ b/hotspot/src/os/windows/vm/os_windows.hpp
|
||||
@@ -31,6 +31,7 @@ static bool zero_page_read_protected() { return true; }
|
||||
|
||||
class win32 {
|
||||
friend class os;
|
||||
+ friend unsigned __stdcall java_start(class Thread*);
|
||||
|
||||
protected:
|
||||
static int _vm_page_size;
|
||||
@@ -42,6 +43,7 @@ class win32 {
|
||||
static bool _is_nt;
|
||||
static bool _is_windows_2003;
|
||||
static bool _is_windows_server;
|
||||
+ static bool _has_exit_bug;
|
||||
|
||||
static void print_windows_version(outputStream* st);
|
||||
|
||||
@@ -63,6 +65,11 @@ class win32 {
|
||||
// load dll from Windows system directory or Windows directory
|
||||
static HINSTANCE load_Windows_dll(const char* name, char *ebuf, int ebuflen);
|
||||
|
||||
+ private:
|
||||
+ enum Ept { EPT_THREAD, EPT_PROCESS, EPT_PROCESS_DIE };
|
||||
+ // Wrapper around _endthreadex(), exit() and _exit()
|
||||
+ static int exit_process_or_thread(Ept what, int exit_code);
|
||||
+
|
||||
public:
|
||||
// Generic interface:
|
||||
|
||||
@@ -79,6 +86,9 @@ class win32 {
|
||||
// Tells whether the platform is Windows 2003
|
||||
static bool is_windows_2003() { return _is_windows_2003; }
|
||||
|
||||
+ // Tells whether there can be the race bug during process exit on this platform
|
||||
+ static bool has_exit_bug() { return _has_exit_bug; }
|
||||
+
|
||||
// Returns the byte size of a virtual memory page
|
||||
static int vm_page_size() { return _vm_page_size; }
|
||||
|
||||
diff --git a/hotspot/src/os/windows/vm/os_windows.inline.hpp b/hotspot/src/os/windows/vm/os_windows.inline.hpp
|
||||
index 5dac11c90..83c51935d 100644
|
||||
--- a/hotspot/src/os/windows/vm/os_windows.inline.hpp
|
||||
+++ b/hotspot/src/os/windows/vm/os_windows.inline.hpp
|
||||
@@ -96,6 +96,10 @@ inline int os::close(int fd) {
|
||||
return ::close(fd);
|
||||
}
|
||||
|
||||
+inline void os::exit(int num) {
|
||||
+ win32::exit_process_or_thread(win32::EPT_PROCESS, num);
|
||||
+}
|
||||
+
|
||||
#define CALL_TEST_FUNC_WITH_WRAPPER_IF_NEEDED(f) \
|
||||
os::win32::call_test_func_with_wrapper(f)
|
||||
|
||||
diff --git a/hotspot/src/share/vm/runtime/java.cpp b/hotspot/src/share/vm/runtime/java.cpp
|
||||
index 5b82a7a36..c72a5a766 100644
|
||||
--- a/hotspot/src/share/vm/runtime/java.cpp
|
||||
+++ b/hotspot/src/share/vm/runtime/java.cpp
|
||||
@@ -625,7 +625,7 @@ void notify_vm_shutdown() {
|
||||
void vm_direct_exit(int code) {
|
||||
notify_vm_shutdown();
|
||||
os::wait_for_keypress_at_exit();
|
||||
- ::exit(code);
|
||||
+ os::exit(code);
|
||||
}
|
||||
|
||||
void vm_perform_shutdown_actions() {
|
||||
diff --git a/hotspot/src/share/vm/runtime/os.hpp b/hotspot/src/share/vm/runtime/os.hpp
|
||||
index e696321ab..6ca220021 100644
|
||||
--- a/hotspot/src/share/vm/runtime/os.hpp
|
||||
+++ b/hotspot/src/share/vm/runtime/os.hpp
|
||||
@@ -545,8 +545,8 @@ class os: AllStatic {
|
||||
// run cmd in a separate process and return its exit code; or -1 on failures
|
||||
static int fork_and_exec(char *cmd, bool use_vfork_if_available = false);
|
||||
|
||||
- // os::exit() is merged with vm_exit()
|
||||
- // static void exit(int num);
|
||||
+ // Call ::exit() on all platforms but Windows
|
||||
+ static void exit(int num);
|
||||
|
||||
// Terminate the VM, but don't exit the process
|
||||
static void shutdown();
|
||||
--
|
||||
2.19.0
|
||||
|
||||
468
8074354-Make-CreateMinidumpOnCrash-a-new-name-and-av.patch
Normal file
468
8074354-Make-CreateMinidumpOnCrash-a-new-name-and-av.patch
Normal file
@ -0,0 +1,468 @@
|
||||
From b48d4df404756872fb7b1ef7be5f9880ba6a0abc Mon Sep 17 00:00:00 2001
|
||||
From: zhangyunbo <zhangyunbo7@huawei.com>
|
||||
Date: Sun, 29 Jan 2023 10:44:01 +0800
|
||||
Subject: [PATCH 07/15] 8074354: Make CreateMinidumpOnCrash a new name and
|
||||
available on all platforms
|
||||
|
||||
DTS/AR: AR.SR.ccd816c9.001
|
||||
Summary: <JDK> :8074354: Make CreateMinidumpOnCrash a new name and available on all platforms
|
||||
LLT: NA
|
||||
Patch Type: backport
|
||||
Bug url: https://bugs.openjdk.org/browse/JDK-8074354
|
||||
---
|
||||
hotspot/src/os/aix/vm/os_aix.cpp | 4 +
|
||||
hotspot/src/os/bsd/vm/os_bsd.cpp | 4 +
|
||||
hotspot/src/os/linux/vm/os_linux.cpp | 4 +
|
||||
hotspot/src/os/posix/vm/os_posix.cpp | 4 +-
|
||||
hotspot/src/os/solaris/vm/os_solaris.cpp | 4 +
|
||||
hotspot/src/os/windows/vm/os_windows.cpp | 117 +++++++++---------
|
||||
hotspot/src/share/vm/runtime/arguments.cpp | 9 ++
|
||||
hotspot/src/share/vm/runtime/globals.hpp | 4 +-
|
||||
hotspot/src/share/vm/runtime/os.hpp | 10 +-
|
||||
hotspot/src/share/vm/utilities/vmError.cpp | 19 +--
|
||||
hotspot/src/share/vm/utilities/vmError.hpp | 6 +-
|
||||
hotspot/test/runtime/Unsafe/RangeCheck.java | 1 +
|
||||
.../runtime/memory/ReadFromNoaccessArea.java | 1 +
|
||||
.../test/runtime/memory/ReserveMemory.java | 1 +
|
||||
14 files changed, 111 insertions(+), 77 deletions(-)
|
||||
|
||||
diff --git a/hotspot/src/os/aix/vm/os_aix.cpp b/hotspot/src/os/aix/vm/os_aix.cpp
|
||||
index 519b08550..6838f33bc 100644
|
||||
--- a/hotspot/src/os/aix/vm/os_aix.cpp
|
||||
+++ b/hotspot/src/os/aix/vm/os_aix.cpp
|
||||
@@ -1214,6 +1214,10 @@ void os::shutdown() {
|
||||
// called from signal handler. Before adding something to os::abort(), make
|
||||
// sure it is async-safe and can handle partially initialized VM.
|
||||
void os::abort(bool dump_core) {
|
||||
+ abort(dump_core, NULL, NULL);
|
||||
+}
|
||||
+
|
||||
+void os::abort(bool dump_core, void* siginfo, void* context) {
|
||||
os::shutdown();
|
||||
if (dump_core) {
|
||||
#ifndef PRODUCT
|
||||
diff --git a/hotspot/src/os/bsd/vm/os_bsd.cpp b/hotspot/src/os/bsd/vm/os_bsd.cpp
|
||||
index 85e28619c..765b60c0d 100644
|
||||
--- a/hotspot/src/os/bsd/vm/os_bsd.cpp
|
||||
+++ b/hotspot/src/os/bsd/vm/os_bsd.cpp
|
||||
@@ -1147,6 +1147,10 @@ void os::shutdown() {
|
||||
// called from signal handler. Before adding something to os::abort(), make
|
||||
// sure it is async-safe and can handle partially initialized VM.
|
||||
void os::abort(bool dump_core) {
|
||||
+ abort(dump_core, NULL, NULL);
|
||||
+}
|
||||
+
|
||||
+void os::abort(bool dump_core, void* siginfo, void* context) {
|
||||
os::shutdown();
|
||||
if (dump_core) {
|
||||
#ifndef PRODUCT
|
||||
diff --git a/hotspot/src/os/linux/vm/os_linux.cpp b/hotspot/src/os/linux/vm/os_linux.cpp
|
||||
index b82352c9f..05c8b254c 100644
|
||||
--- a/hotspot/src/os/linux/vm/os_linux.cpp
|
||||
+++ b/hotspot/src/os/linux/vm/os_linux.cpp
|
||||
@@ -1588,6 +1588,10 @@ void os::shutdown() {
|
||||
// called from signal handler. Before adding something to os::abort(), make
|
||||
// sure it is async-safe and can handle partially initialized VM.
|
||||
void os::abort(bool dump_core) {
|
||||
+ abort(dump_core, NULL, NULL);
|
||||
+}
|
||||
+
|
||||
+void os::abort(bool dump_core, void* siginfo, void* context) {
|
||||
os::shutdown();
|
||||
if (dump_core) {
|
||||
#ifndef PRODUCT
|
||||
diff --git a/hotspot/src/os/posix/vm/os_posix.cpp b/hotspot/src/os/posix/vm/os_posix.cpp
|
||||
index d2663bd86..678a1059f 100644
|
||||
--- a/hotspot/src/os/posix/vm/os_posix.cpp
|
||||
+++ b/hotspot/src/os/posix/vm/os_posix.cpp
|
||||
@@ -48,7 +48,7 @@ PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
|
||||
#define ROOT_UID 0
|
||||
|
||||
// Check core dump limit and report possible place where core can be found
|
||||
-void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize) {
|
||||
+void os::check_dump_limit(char* buffer, size_t bufferSize) {
|
||||
int n;
|
||||
struct rlimit rlim;
|
||||
bool success;
|
||||
@@ -74,7 +74,7 @@ void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char*
|
||||
break;
|
||||
}
|
||||
}
|
||||
- VMError::report_coredump_status(buffer, success);
|
||||
+ VMError::record_coredump_status(buffer, success);
|
||||
}
|
||||
|
||||
int os::get_native_stack(address* stack, int frames, int toSkip) {
|
||||
diff --git a/hotspot/src/os/solaris/vm/os_solaris.cpp b/hotspot/src/os/solaris/vm/os_solaris.cpp
|
||||
index d995f51e3..9f8c6a9bf 100644
|
||||
--- a/hotspot/src/os/solaris/vm/os_solaris.cpp
|
||||
+++ b/hotspot/src/os/solaris/vm/os_solaris.cpp
|
||||
@@ -1581,6 +1581,10 @@ void os::shutdown() {
|
||||
// called from signal handler. Before adding something to os::abort(), make
|
||||
// sure it is async-safe and can handle partially initialized VM.
|
||||
void os::abort(bool dump_core) {
|
||||
+ abort(dump_core, NULL, NULL);
|
||||
+}
|
||||
+
|
||||
+void os::abort(bool dump_core, void* siginfo, void* context) {
|
||||
os::shutdown();
|
||||
if (dump_core) {
|
||||
#ifndef PRODUCT
|
||||
diff --git a/hotspot/src/os/windows/vm/os_windows.cpp b/hotspot/src/os/windows/vm/os_windows.cpp
|
||||
index 23dec5b67..11bd14f6f 100644
|
||||
--- a/hotspot/src/os/windows/vm/os_windows.cpp
|
||||
+++ b/hotspot/src/os/windows/vm/os_windows.cpp
|
||||
@@ -980,7 +980,43 @@ void os::shutdown() {
|
||||
static BOOL (WINAPI *_MiniDumpWriteDump) ( HANDLE, DWORD, HANDLE, MINIDUMP_TYPE, PMINIDUMP_EXCEPTION_INFORMATION,
|
||||
PMINIDUMP_USER_STREAM_INFORMATION, PMINIDUMP_CALLBACK_INFORMATION);
|
||||
|
||||
-void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize) {
|
||||
+static HANDLE dumpFile = NULL;
|
||||
+
|
||||
+// Check if dump file can be created.
|
||||
+void os::check_dump_limit(char* buffer, size_t buffsz) {
|
||||
+ bool status = true;
|
||||
+ if (!FLAG_IS_DEFAULT(CreateCoredumpOnCrash) && !CreateCoredumpOnCrash) {
|
||||
+ jio_snprintf(buffer, buffsz, "CreateCoredumpOnCrash is disabled from command line");
|
||||
+ status = false;
|
||||
+ }
|
||||
+
|
||||
+#ifndef ASSERT
|
||||
+ if (!os::win32::is_windows_server() && FLAG_IS_DEFAULT(CreateCoredumpOnCrash)) {
|
||||
+ jio_snprintf(buffer, buffsz, "Minidumps are not enabled by default on client versions of Windows");
|
||||
+ status = false;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ if (status) {
|
||||
+ const char* cwd = get_current_directory(NULL, 0);
|
||||
+ int pid = current_process_id();
|
||||
+ if (cwd != NULL) {
|
||||
+ jio_snprintf(buffer, buffsz, "%s\\hs_err_pid%u.mdmp", cwd, pid);
|
||||
+ } else {
|
||||
+ jio_snprintf(buffer, buffsz, ".\\hs_err_pid%u.mdmp", pid);
|
||||
+ }
|
||||
+
|
||||
+ if (dumpFile == NULL &&
|
||||
+ (dumpFile = CreateFile(buffer, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL))
|
||||
+ == INVALID_HANDLE_VALUE) {
|
||||
+ jio_snprintf(buffer, buffsz, "Failed to create minidump file (0x%x).", GetLastError());
|
||||
+ status = false;
|
||||
+ }
|
||||
+ }
|
||||
+ VMError::record_coredump_status(buffer, status);
|
||||
+}
|
||||
+
|
||||
+void os::abort(bool dump_core, void* siginfo, void* context) {
|
||||
HINSTANCE dbghelp;
|
||||
EXCEPTION_POINTERS ep;
|
||||
MINIDUMP_EXCEPTION_INFORMATION mei;
|
||||
@@ -988,33 +1024,22 @@ void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char*
|
||||
|
||||
HANDLE hProcess = GetCurrentProcess();
|
||||
DWORD processId = GetCurrentProcessId();
|
||||
- HANDLE dumpFile;
|
||||
MINIDUMP_TYPE dumpType;
|
||||
- static const char* cwd;
|
||||
|
||||
-// Default is to always create dump for debug builds, on product builds only dump on server versions of Windows.
|
||||
-#ifndef ASSERT
|
||||
- // If running on a client version of Windows and user has not explicitly enabled dumping
|
||||
- if (!os::win32::is_windows_server() && !CreateMinidumpOnCrash) {
|
||||
- VMError::report_coredump_status("Minidumps are not enabled by default on client versions of Windows", false);
|
||||
- return;
|
||||
- // If running on a server version of Windows and user has explictly disabled dumping
|
||||
- } else if (os::win32::is_windows_server() && !FLAG_IS_DEFAULT(CreateMinidumpOnCrash) && !CreateMinidumpOnCrash) {
|
||||
- VMError::report_coredump_status("Minidump has been disabled from the command line", false);
|
||||
- return;
|
||||
- }
|
||||
-#else
|
||||
- if (!FLAG_IS_DEFAULT(CreateMinidumpOnCrash) && !CreateMinidumpOnCrash) {
|
||||
- VMError::report_coredump_status("Minidump has been disabled from the command line", false);
|
||||
- return;
|
||||
+ shutdown();
|
||||
+ if (!dump_core || dumpFile == NULL) {
|
||||
+ if (dumpFile != NULL) {
|
||||
+ CloseHandle(dumpFile);
|
||||
+ }
|
||||
+ win32::exit_process_or_thread(win32::EPT_PROCESS, 1);
|
||||
}
|
||||
-#endif
|
||||
|
||||
dbghelp = os::win32::load_Windows_dll("DBGHELP.DLL", NULL, 0);
|
||||
|
||||
if (dbghelp == NULL) {
|
||||
- VMError::report_coredump_status("Failed to load dbghelp.dll", false);
|
||||
- return;
|
||||
+ jio_fprintf(stderr, "Failed to load dbghelp.dll\n");
|
||||
+ CloseHandle(dumpFile);
|
||||
+ win32::exit_process_or_thread(win32::EPT_PROCESS, 1);
|
||||
}
|
||||
|
||||
_MiniDumpWriteDump = CAST_TO_FN_PTR(
|
||||
@@ -1023,30 +1048,22 @@ void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char*
|
||||
GetProcAddress(dbghelp, "MiniDumpWriteDump"));
|
||||
|
||||
if (_MiniDumpWriteDump == NULL) {
|
||||
- VMError::report_coredump_status("Failed to find MiniDumpWriteDump() in module dbghelp.dll", false);
|
||||
- return;
|
||||
+ jio_fprintf(stderr, "Failed to find MiniDumpWriteDump() in module dbghelp.dll.\n");
|
||||
+ CloseHandle(dumpFile);
|
||||
+ win32::exit_process_or_thread(win32::EPT_PROCESS, 1);
|
||||
}
|
||||
|
||||
dumpType = (MINIDUMP_TYPE)(MiniDumpWithFullMemory | MiniDumpWithHandleData);
|
||||
|
||||
-// Older versions of dbghelp.h doesn't contain all the dumptypes we want, dbghelp.h with
|
||||
-// API_VERSION_NUMBER 11 or higher contains the ones we want though
|
||||
+ // Older versions of dbghelp.h do not contain all the dumptypes we want, dbghelp.h with
|
||||
+ // API_VERSION_NUMBER 11 or higher contains the ones we want though
|
||||
#if API_VERSION_NUMBER >= 11
|
||||
dumpType = (MINIDUMP_TYPE)(dumpType | MiniDumpWithFullMemoryInfo | MiniDumpWithThreadInfo |
|
||||
MiniDumpWithUnloadedModules);
|
||||
#endif
|
||||
-
|
||||
- cwd = get_current_directory(NULL, 0);
|
||||
- jio_snprintf(buffer, bufferSize, "%s\\hs_err_pid%u.mdmp",cwd, current_process_id());
|
||||
- dumpFile = CreateFile(buffer, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
-
|
||||
- if (dumpFile == INVALID_HANDLE_VALUE) {
|
||||
- VMError::report_coredump_status("Failed to create file for dumping", false);
|
||||
- return;
|
||||
- }
|
||||
- if (exceptionRecord != NULL && contextRecord != NULL) {
|
||||
- ep.ContextRecord = (PCONTEXT) contextRecord;
|
||||
- ep.ExceptionRecord = (PEXCEPTION_RECORD) exceptionRecord;
|
||||
+ if (siginfo != NULL && context != NULL) {
|
||||
+ ep.ContextRecord = (PCONTEXT) context;
|
||||
+ ep.ExceptionRecord = (PEXCEPTION_RECORD) siginfo;
|
||||
|
||||
mei.ThreadId = GetCurrentThreadId();
|
||||
mei.ExceptionPointers = &ep;
|
||||
@@ -1055,40 +1072,20 @@ void os::check_or_create_dump(void* exceptionRecord, void* contextRecord, char*
|
||||
pmei = NULL;
|
||||
}
|
||||
|
||||
-
|
||||
// Older versions of dbghelp.dll (the one shipped with Win2003 for example) may not support all
|
||||
// the dump types we really want. If first call fails, lets fall back to just use MiniDumpWithFullMemory then.
|
||||
if (_MiniDumpWriteDump(hProcess, processId, dumpFile, dumpType, pmei, NULL, NULL) == false &&
|
||||
_MiniDumpWriteDump(hProcess, processId, dumpFile, (MINIDUMP_TYPE)MiniDumpWithFullMemory, pmei, NULL, NULL) == false) {
|
||||
- DWORD error = GetLastError();
|
||||
- LPTSTR msgbuf = NULL;
|
||||
-
|
||||
- if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||
- FORMAT_MESSAGE_FROM_SYSTEM |
|
||||
- FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
- NULL, error, 0, (LPTSTR)&msgbuf, 0, NULL) != 0) {
|
||||
-
|
||||
- jio_snprintf(buffer, bufferSize, "Call to MiniDumpWriteDump() failed (Error 0x%x: %s)", error, msgbuf);
|
||||
- LocalFree(msgbuf);
|
||||
- } else {
|
||||
- // Call to FormatMessage failed, just include the result from GetLastError
|
||||
- jio_snprintf(buffer, bufferSize, "Call to MiniDumpWriteDump() failed (Error 0x%x)", error);
|
||||
- }
|
||||
- VMError::report_coredump_status(buffer, false);
|
||||
- } else {
|
||||
- VMError::report_coredump_status(buffer, true);
|
||||
+ jio_fprintf(stderr, "Call to MiniDumpWriteDump() failed (Error 0x%x)\n", GetLastError());
|
||||
}
|
||||
-
|
||||
CloseHandle(dumpFile);
|
||||
+ win32::exit_process_or_thread(win32::EPT_PROCESS, 1);
|
||||
}
|
||||
|
||||
|
||||
-
|
||||
void os::abort(bool dump_core)
|
||||
{
|
||||
- os::shutdown();
|
||||
- // no core dump on Windows
|
||||
- ::exit(1);
|
||||
+ abort(dump_core, NULL, NULL);
|
||||
}
|
||||
|
||||
// Die immediately, no exit hook, no abort hook, no cleanup.
|
||||
diff --git a/hotspot/src/share/vm/runtime/arguments.cpp b/hotspot/src/share/vm/runtime/arguments.cpp
|
||||
index b0b541482..43fdd0b49 100644
|
||||
--- a/hotspot/src/share/vm/runtime/arguments.cpp
|
||||
+++ b/hotspot/src/share/vm/runtime/arguments.cpp
|
||||
@@ -3599,6 +3599,15 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args,
|
||||
} else if (match_jfr_option(&option)) {
|
||||
return JNI_EINVAL;
|
||||
#endif
|
||||
+ // CreateMinidumpOnCrash is removed, and replaced by CreateCoredumpOnCrash
|
||||
+ } else if (match_option(option, "-XX:+CreateMinidumpOnCrash", &tail)) {
|
||||
+ FLAG_SET_CMDLINE(bool, CreateCoredumpOnCrash, true);
|
||||
+ jio_fprintf(defaultStream::output_stream(),
|
||||
+ "CreateMinidumpOnCrash is replaced by CreateCoredumpOnCrash: CreateCoredumpOnCrash is on\n");
|
||||
+ } else if (match_option(option, "-XX:-CreateMinidumpOnCrash", &tail)) {
|
||||
+ FLAG_SET_CMDLINE(bool, CreateCoredumpOnCrash, false);
|
||||
+ jio_fprintf(defaultStream::output_stream(),
|
||||
+ "CreateMinidumpOnCrash is replaced by CreateCoredumpOnCrash: CreateCoredumpOnCrash is off\n");
|
||||
} else if (match_option(option, "-XX:", &tail)) { // -XX:xxxx
|
||||
// Skip -XX:Flags= since that case has already been handled
|
||||
if (strncmp(tail, "Flags=", strlen("Flags=")) != 0) {
|
||||
diff --git a/hotspot/src/share/vm/runtime/globals.hpp b/hotspot/src/share/vm/runtime/globals.hpp
|
||||
index 3dd4c51a9..3b2776ce5 100644
|
||||
--- a/hotspot/src/share/vm/runtime/globals.hpp
|
||||
+++ b/hotspot/src/share/vm/runtime/globals.hpp
|
||||
@@ -948,8 +948,8 @@ class CommandLineFlags {
|
||||
product(bool, ShowMessageBoxOnError, false, \
|
||||
"Keep process alive on VM fatal error") \
|
||||
\
|
||||
- product(bool, CreateMinidumpOnCrash, false, \
|
||||
- "Create minidump on VM fatal error") \
|
||||
+ product(bool, CreateCoredumpOnCrash, true, \
|
||||
+ "Create core/mini dump on VM fatal error") \
|
||||
\
|
||||
product_pd(bool, UseOSErrorReporting, \
|
||||
"Let VM fatal error propagate to the OS (ie. WER on Windows)") \
|
||||
diff --git a/hotspot/src/share/vm/runtime/os.hpp b/hotspot/src/share/vm/runtime/os.hpp
|
||||
index 092459c99..e696321ab 100644
|
||||
--- a/hotspot/src/share/vm/runtime/os.hpp
|
||||
+++ b/hotspot/src/share/vm/runtime/os.hpp
|
||||
@@ -553,6 +553,7 @@ class os: AllStatic {
|
||||
|
||||
// Terminate with an error. Default is to generate a core file on platforms
|
||||
// that support such things. This calls shutdown() and then aborts.
|
||||
+ static void abort(bool dump_core, void *siginfo, void *context);
|
||||
static void abort(bool dump_core = true);
|
||||
|
||||
// Die immediately, no exit hook, no abort hook, no cleanup.
|
||||
@@ -803,8 +804,13 @@ class os: AllStatic {
|
||||
// Structured OS Exception support
|
||||
static void os_exception_wrapper(java_call_t f, JavaValue* value, methodHandle* method, JavaCallArguments* args, Thread* thread);
|
||||
|
||||
- // On Windows this will create an actual minidump, on Linux/Solaris it will simply check core dump limits
|
||||
- static void check_or_create_dump(void* exceptionRecord, void* contextRecord, char* buffer, size_t bufferSize);
|
||||
+ // On Posix compatible OS it will simply check core dump limits while on Windows
|
||||
+ // it will check if dump file can be created. Check or prepare a core dump to be
|
||||
+ // taken at a later point in the same thread in os::abort(). Use the caller
|
||||
+ // provided buffer as a scratch buffer. The status message which will be written
|
||||
+ // into the error log either is file location or a short error message, depending
|
||||
+ // on the checking result.
|
||||
+ static void check_dump_limit(char* buffer, size_t bufferSize);
|
||||
|
||||
// Get the default path to the core file
|
||||
// Returns the length of the string
|
||||
diff --git a/hotspot/src/share/vm/utilities/vmError.cpp b/hotspot/src/share/vm/utilities/vmError.cpp
|
||||
index 26408fa5e..56ae50fe5 100644
|
||||
--- a/hotspot/src/share/vm/utilities/vmError.cpp
|
||||
+++ b/hotspot/src/share/vm/utilities/vmError.cpp
|
||||
@@ -220,7 +220,7 @@ static void print_bug_submit_message(outputStream *out, Thread *thread) {
|
||||
bool VMError::coredump_status;
|
||||
char VMError::coredump_message[O_BUFLEN];
|
||||
|
||||
-void VMError::report_coredump_status(const char* message, bool status) {
|
||||
+void VMError::record_coredump_status(const char* message, bool status) {
|
||||
coredump_status = status;
|
||||
strncpy(coredump_message, message, sizeof(coredump_message));
|
||||
coredump_message[sizeof(coredump_message)-1] = 0;
|
||||
@@ -533,10 +533,14 @@ void VMError::report(outputStream* st) {
|
||||
}
|
||||
STEP(63, "(printing core file information)")
|
||||
st->print("# ");
|
||||
- if (coredump_status) {
|
||||
- st->print("Core dump written. Default location: %s", coredump_message);
|
||||
+ if (CreateCoredumpOnCrash) {
|
||||
+ if (coredump_status) {
|
||||
+ st->print("Core dump will be written. %s", coredump_message);
|
||||
+ } else {
|
||||
+ st->print("No core dump will be written. %s", coredump_message);
|
||||
+ }
|
||||
} else {
|
||||
- st->print("Failed to write core dump. %s", coredump_message);
|
||||
+ st->print("CreateCoredumpOnCrash turned off, no core file dumped");
|
||||
}
|
||||
st->cr();
|
||||
st->print_cr("#");
|
||||
@@ -944,7 +948,7 @@ void VMError::report_and_die() {
|
||||
static bool transmit_report_done = false; // done error reporting
|
||||
|
||||
if (SuppressFatalErrorMessage) {
|
||||
- os::abort();
|
||||
+ os::abort(CreateCoredumpOnCrash);
|
||||
}
|
||||
jlong mytid = os::current_thread_id();
|
||||
if (first_error == NULL &&
|
||||
@@ -962,8 +966,7 @@ void VMError::report_and_die() {
|
||||
ShowMessageBoxOnError = false;
|
||||
}
|
||||
|
||||
- // Write a minidump on Windows, check core dump limits on Linux/Solaris
|
||||
- os::check_or_create_dump(_siginfo, _context, buffer, sizeof(buffer));
|
||||
+ os::check_dump_limit(buffer, sizeof(buffer));
|
||||
|
||||
// reset signal handlers or exception filter; make sure recursive crashes
|
||||
// are handled properly.
|
||||
@@ -1153,7 +1156,7 @@ void VMError::report_and_die() {
|
||||
if (!skip_os_abort) {
|
||||
skip_os_abort = true;
|
||||
bool dump_core = should_report_bug(first_error->_id);
|
||||
- os::abort(dump_core);
|
||||
+ os::abort(dump_core && CreateCoredumpOnCrash, _siginfo, _context);
|
||||
}
|
||||
|
||||
// if os::abort() doesn't abort, try os::die();
|
||||
diff --git a/hotspot/src/share/vm/utilities/vmError.hpp b/hotspot/src/share/vm/utilities/vmError.hpp
|
||||
index 21db84d0c..dc455c6fa 100644
|
||||
--- a/hotspot/src/share/vm/utilities/vmError.hpp
|
||||
+++ b/hotspot/src/share/vm/utilities/vmError.hpp
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
+ * Copyright (c) 2003, 2015, 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
|
||||
@@ -117,8 +117,8 @@ public:
|
||||
// return a string to describe the error
|
||||
char *error_string(char* buf, int buflen);
|
||||
|
||||
- // Report status of core/minidump
|
||||
- static void report_coredump_status(const char* message, bool status);
|
||||
+ // Record status of core/minidump
|
||||
+ static void record_coredump_status(const char* message, bool status);
|
||||
|
||||
// main error reporting function
|
||||
void report_and_die();
|
||||
diff --git a/hotspot/test/runtime/Unsafe/RangeCheck.java b/hotspot/test/runtime/Unsafe/RangeCheck.java
|
||||
index 9ded944cb..602f22500 100644
|
||||
--- a/hotspot/test/runtime/Unsafe/RangeCheck.java
|
||||
+++ b/hotspot/test/runtime/Unsafe/RangeCheck.java
|
||||
@@ -43,6 +43,7 @@ public class RangeCheck {
|
||||
true,
|
||||
"-Xmx32m",
|
||||
"-XX:-TransmitErrorReport",
|
||||
+ "-XX:-CreateCoredumpOnCrash",
|
||||
DummyClassWithMainRangeCheck.class.getName());
|
||||
|
||||
OutputAnalyzer output = new OutputAnalyzer(pb.start());
|
||||
diff --git a/hotspot/test/runtime/memory/ReadFromNoaccessArea.java b/hotspot/test/runtime/memory/ReadFromNoaccessArea.java
|
||||
index 1078dd2e4..b2a58ae0a 100644
|
||||
--- a/hotspot/test/runtime/memory/ReadFromNoaccessArea.java
|
||||
+++ b/hotspot/test/runtime/memory/ReadFromNoaccessArea.java
|
||||
@@ -45,6 +45,7 @@ public class ReadFromNoaccessArea {
|
||||
"-Xbootclasspath/a:.",
|
||||
"-XX:+UnlockDiagnosticVMOptions",
|
||||
"-XX:+WhiteBoxAPI",
|
||||
+ "-XX:-CreateCoredumpOnCrash",
|
||||
"-XX:+UseCompressedOops",
|
||||
"-XX:HeapBaseMinAddress=33G",
|
||||
DummyClassWithMainTryingToReadFromNoaccessArea.class.getName());
|
||||
diff --git a/hotspot/test/runtime/memory/ReserveMemory.java b/hotspot/test/runtime/memory/ReserveMemory.java
|
||||
index 9e37d52cc..ef4dde1a7 100644
|
||||
--- a/hotspot/test/runtime/memory/ReserveMemory.java
|
||||
+++ b/hotspot/test/runtime/memory/ReserveMemory.java
|
||||
@@ -57,6 +57,7 @@ public class ReserveMemory {
|
||||
"-XX:+UnlockDiagnosticVMOptions",
|
||||
"-XX:+WhiteBoxAPI",
|
||||
"-XX:-TransmitErrorReport",
|
||||
+ "-XX:-CreateCoredumpOnCrash",
|
||||
"ReserveMemory",
|
||||
"test");
|
||||
|
||||
--
|
||||
2.19.0
|
||||
|
||||
@ -171,8 +171,8 @@ diff --git a/common/autoconf/spec.gmk.in b/common/autoconf/spec.gmk.in
|
||||
index 4c3a9f61..79248cbf 100644
|
||||
--- a/common/autoconf/spec.gmk.in
|
||||
+++ b/common/autoconf/spec.gmk.in
|
||||
@@ -611,6 +611,10 @@ LIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
|
||||
MSVCR_DLL:=@MSVCR_DLL@
|
||||
@@ -612,6 +612,10 @@ LIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
|
||||
VCRUNTIME_1_DLL:=@VCRUNTIME_1_DLL@
|
||||
MSVCP_DLL:=@MSVCP_DLL@
|
||||
UCRT_DLL_DIR:=@UCRT_DLL_DIR@
|
||||
+# CDS_ARCHIVE
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
From 16caa051cb7299312cdaf9d79eaef01d294474f6 Mon Sep 17 00:00:00 2001
|
||||
From: eapen <zhangyipeng7@huawei.com>
|
||||
Date: Thu, 15 Dec 2022 17:06:41 +0800
|
||||
Subject: [PATCH 21/33] I68TO2: 8204595: add more thread-related system settings info
|
||||
to hs_error file on Linux
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
From d68c637a36b65d0bce893991e9c910efbc06239a Mon Sep 17 00:00:00 2001
|
||||
From: eapen <zhangyipeng7@huawei.com>
|
||||
Date: Mon, 12 Dec 2022 16:10:41 +0800
|
||||
Subject: [PATCH 10/33] I68TO2: 8257695: [linux] Add process-memory information to
|
||||
hs-err and VM.info
|
||||
@ -22,7 +21,7 @@ index 6dbedf5..4c265d5 100644
|
||||
|
||||
PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
|
||||
|
||||
@@ -2216,7 +2219,10 @@ void os::print_os_info(outputStream* st) {
|
||||
@@ -2215,7 +2218,10 @@ void os::print_os_info(outputStream* st) {
|
||||
|
||||
os::Posix::print_load_average(st);
|
||||
|
||||
@ -34,7 +33,7 @@ index 6dbedf5..4c265d5 100644
|
||||
|
||||
os::Linux::print_container_info(st);
|
||||
}
|
||||
@@ -2278,12 +2284,69 @@ void os::Linux::print_libversion_info(outputStream* st) {
|
||||
@@ -2280,12 +2286,69 @@ void os::Linux::print_libversion_info(outputStream* st) {
|
||||
st->cr();
|
||||
}
|
||||
|
||||
|
||||
@ -1,237 +0,0 @@
|
||||
From d2d3408154beb52370ee8784767375a7cc8d325d Mon Sep 17 00:00:00 2001
|
||||
Date: Wed, 21 Sep 2022 10:31:17 +0800
|
||||
Subject: 8287109: Distrust.java failed with CertificateExpiredException
|
||||
|
||||
---
|
||||
.../Symantec/Distrust.java | 26 +++++-
|
||||
.../Symantec/appleistca2g1-chain.pem | 80 -------------------
|
||||
.../Symantec/geotrustglobalca-chain.pem | 66 ---------------
|
||||
3 files changed, 23 insertions(+), 149 deletions(-)
|
||||
delete mode 100644 jdk/test/sun/security/ssl/X509TrustManagerImpl/Symantec/appleistca2g1-chain.pem
|
||||
delete mode 100644 jdk/test/sun/security/ssl/X509TrustManagerImpl/Symantec/geotrustglobalca-chain.pem
|
||||
|
||||
diff --git a/jdk/test/sun/security/ssl/X509TrustManagerImpl/Symantec/Distrust.java b/jdk/test/sun/security/ssl/X509TrustManagerImpl/Symantec/Distrust.java
|
||||
index d394f417..22266255 100644
|
||||
--- a/jdk/test/sun/security/ssl/X509TrustManagerImpl/Symantec/Distrust.java
|
||||
+++ b/jdk/test/sun/security/ssl/X509TrustManagerImpl/Symantec/Distrust.java
|
||||
@@ -51,15 +51,14 @@ public class Distrust {
|
||||
// Each of the roots have a test certificate chain stored in a file
|
||||
// named "<root>-chain.pem".
|
||||
private static String[] rootsToTest = new String[] {
|
||||
- "geotrustglobalca", "geotrustprimarycag2", "geotrustprimarycag3",
|
||||
+ "geotrustprimarycag2", "geotrustprimarycag3",
|
||||
"geotrustuniversalca", "thawteprimaryrootca", "thawteprimaryrootcag2",
|
||||
"thawteprimaryrootcag3", "verisignclass3g3ca", "verisignclass3g4ca",
|
||||
"verisignclass3g5ca", "verisignuniversalrootca" };
|
||||
|
||||
// Each of the subCAs with a delayed distrust date have a test certificate
|
||||
// chain stored in a file named "<subCA>-chain.pem".
|
||||
- private static String[] subCAsToTest = new String[] {
|
||||
- "appleistca2g1", "appleistca8g1" };
|
||||
+ private static String[] subCAsToTest = new String[] {"appleistca8g1"};
|
||||
|
||||
// A date that is after the restrictions take affect
|
||||
private static final Date APRIL_17_2019 =
|
||||
@@ -177,6 +176,11 @@ public class Distrust {
|
||||
throw new Exception("chain should be invalid");
|
||||
}
|
||||
} catch (CertificateException ce) {
|
||||
+ // expired TLS certificates should not be treated as failure
|
||||
+ if (expired(ce)) {
|
||||
+ System.err.println("Test is N/A, chain is expired");
|
||||
+ return;
|
||||
+ }
|
||||
if (valid) {
|
||||
throw new Exception("Unexpected exception, chain " +
|
||||
"should be valid", ce);
|
||||
@@ -184,6 +188,7 @@ public class Distrust {
|
||||
if (ce instanceof ValidatorException) {
|
||||
ValidatorException ve = (ValidatorException)ce;
|
||||
if (ve.getErrorType() != ValidatorException.T_UNTRUSTED_CERT) {
|
||||
+ ce.printStackTrace(System.err);
|
||||
throw new Exception("Unexpected exception: " + ce);
|
||||
}
|
||||
} else {
|
||||
@@ -192,6 +197,21 @@ public class Distrust {
|
||||
}
|
||||
}
|
||||
|
||||
+ // check if a cause of exception is an expired cert
|
||||
+ private static boolean expired(CertificateException ce) {
|
||||
+ if (ce instanceof CertificateExpiredException) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ Throwable t = ce.getCause();
|
||||
+ while (t != null) {
|
||||
+ if (t instanceof CertificateExpiredException) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ t = t.getCause();
|
||||
+ }
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
private static X509Certificate[] loadCertificateChain(String name)
|
||||
throws Exception {
|
||||
try (InputStream in = new FileInputStream(TEST_SRC + File.separator +
|
||||
diff --git a/jdk/test/sun/security/ssl/X509TrustManagerImpl/Symantec/appleistca2g1-chain.pem b/jdk/test/sun/security/ssl/X509TrustManagerImpl/Symantec/appleistca2g1-chain.pem
|
||||
deleted file mode 100644
|
||||
index 0235631d..00000000
|
||||
--- a/jdk/test/sun/security/ssl/X509TrustManagerImpl/Symantec/appleistca2g1-chain.pem
|
||||
+++ /dev/null
|
||||
@@ -1,80 +0,0 @@
|
||||
------BEGIN CERTIFICATE-----
|
||||
-MIIGGzCCBQOgAwIBAgIITJltLCqcD0gwDQYJKoZIhvcNAQELBQAwYjEcMBoGA1UE
|
||||
-AxMTQXBwbGUgSVNUIENBIDIgLSBHMTEgMB4GA1UECxMXQ2VydGlmaWNhdGlvbiBB
|
||||
-dXRob3JpdHkxEzARBgNVBAoTCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTE5
|
||||
-MDEwODIxMTcxNFoXDTIwMDgwODIxMjcwMFowgaoxSjBIBgNVBAMMQWFjdGl2ZS5n
|
||||
-ZW90cnVzdC1nbG9iYWwtY2EudGVzdC1wYWdlcy5jZXJ0aWZpY2F0ZW1hbmFnZXIu
|
||||
-YXBwbGUuY29tMSUwIwYDVQQLDBxtYW5hZ2VtZW50OmlkbXMuZ3JvdXAuODY0ODU5
|
||||
-MRMwEQYDVQQKDApBcHBsZSBJbmMuMRMwEQYDVQQIDApDYWxpZm9ybmlhMQswCQYD
|
||||
-VQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMCjFUrVHTEX
|
||||
-0aVU6x9LiGa6oVr9blaCsMFrLicPQguc43Vs/pN+g4jzRXsTSMe9XefezBQb6tzZ
|
||||
-SMRXVB4kWMr4K1BVgQDkXeyoh4KrXRkdEF9ZIJPNxwTmmYUOc5M6NOYwkLelYz+t
|
||||
-7n1iNIGylbjwU4qwauElk2alFVqYTEPDLzwvqVDb9jMAJ8MPSDjfUlXW0XD9oXZM
|
||||
-hC+8LU9JBgJ3YBdzRHa4WnrudUbWjspqaNfAYpVIX0cfCJKnMsKqaSKjS4pIRtWm
|
||||
-L6NlCTCoIMyOh+wmbWPPX24H2D3+ump5FA35fRYbVznmosl5n1AK34S9tD4XZ7lO
|
||||
-WZKfaFi1liMCAwEAAaOCAoowggKGMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU
|
||||
-2HqURHyQcJAWnt0XnAFEA4bWKikwfgYIKwYBBQUHAQEEcjBwMDQGCCsGAQUFBzAC
|
||||
-hihodHRwOi8vY2VydHMuYXBwbGUuY29tL2FwcGxlaXN0Y2EyZzEuZGVyMDgGCCsG
|
||||
-AQUFBzABhixodHRwOi8vb2NzcC5hcHBsZS5jb20vb2NzcDAzLWFwcGxlaXN0Y2Ey
|
||||
-ZzEwMTBMBgNVHREERTBDgkFhY3RpdmUuZ2VvdHJ1c3QtZ2xvYmFsLWNhLnRlc3Qt
|
||||
-cGFnZXMuY2VydGlmaWNhdGVtYW5hZ2VyLmFwcGxlLmNvbTCB/wYDVR0gBIH3MIH0
|
||||
-MIHxBgoqhkiG92NkBQsEMIHiMIGkBggrBgEFBQcCAjCBlwyBlFJlbGlhbmNlIG9u
|
||||
-IHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5j
|
||||
-ZSBvZiBhbnkgYXBwbGljYWJsZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2Ug
|
||||
-YW5kL29yIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wOQYIKwYB
|
||||
-BQUHAgEWLWh0dHA6Ly93d3cuYXBwbGUuY29tL2NlcnRpZmljYXRlYXV0aG9yaXR5
|
||||
-L3JwYTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwNwYDVR0fBDAwLjAs
|
||||
-oCqgKIYmaHR0cDovL2NybC5hcHBsZS5jb20vYXBwbGVpc3RjYTJnMS5jcmwwHQYD
|
||||
-VR0OBBYEFP0qkmFJhArI0MsfW0V+/wY9x4GSMA4GA1UdDwEB/wQEAwIFoDANBgkq
|
||||
-hkiG9w0BAQsFAAOCAQEATjT8M0bIq+mFc8k5cd4KDjCMBjYl/l3/8zKlWYGP+nl1
|
||||
-KRogXcGRa3LcfpdJcqgMrx8e9Xohduvl8MBzwv671rYkppzZdsmZdLVorAdbL5GL
|
||||
-suhTjAS5yL3NBWNMRpeOgFsVr7YtPDEvo3CFsnzjg7THe0S6Y35oYukJtUzGUvSY
|
||||
-kC3ApBTdjj0vAeow+dbt+AHKnQiEnon4ToSFmtnkru08Uxe7uyHCQ2sLUg0EPYc9
|
||||
-t9I8lviaHfK/mQoCzlme2O/H5Rher8dXCv8hVT1NKbsi28EpgpqcTLS+hn/Edc/q
|
||||
-4dPDoO1Ozs+ixRzFeMpA+JrnAyARb6qbSrAPBgtIbQ==
|
||||
------END CERTIFICATE-----
|
||||
------BEGIN CERTIFICATE-----
|
||||
-MIIEQDCCAyigAwIBAgIDAjp0MA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT
|
||||
-MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
|
||||
-YWwgQ0EwHhcNMTQwNjE2MTU0MjAyWhcNMjIwNTIwMTU0MjAyWjBiMRwwGgYDVQQD
|
||||
-ExNBcHBsZSBJU1QgQ0EgMiAtIEcxMSAwHgYDVQQLExdDZXJ0aWZpY2F0aW9uIEF1
|
||||
-dGhvcml0eTETMBEGA1UEChMKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0G
|
||||
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQk6EdR0MgFrILa+vD1bTox5jN896/
|
||||
-6E3p4zaAB/xFG2p8RYauVtOkCX9hDWtdflJrfbTIOcT0Zzr3g84Zb4YvfkV+Rxxn
|
||||
-UsqVBV3iNlGFwNRngDVvFd0+/R3S/Y80UNjsdiq+49Pa5P3I6ygClhGXF2Ec6cRZ
|
||||
-O0LcMtEJHdqm0UOG/16yvIzPZtsBiwKulEjzOI/96jKoCOyGl1GUJD5JSZZT6Hmh
|
||||
-QIHpBbuTlVH84/18EUv3ngizFUkVB/nRN6CbSzL2tcTcatH8Cu324MUpoKiLcf4N
|
||||
-krz+VHAYCm3H7Qz7yS0Gw4yF/MuGXNY2jhKLCX/7GRo41fCUMHoPpozzAgMBAAGj
|
||||
-ggEdMIIBGTAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1luMrMTjAdBgNVHQ4E
|
||||
-FgQU2HqURHyQcJAWnt0XnAFEA4bWKikwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV
|
||||
-HQ8BAf8EBAMCAQYwNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2cuc3ltY2IuY29t
|
||||
-L2NybHMvZ3RnbG9iYWwuY3JsMC4GCCsGAQUFBwEBBCIwIDAeBggrBgEFBQcwAYYS
|
||||
-aHR0cDovL2cuc3ltY2QuY29tMEwGA1UdIARFMEMwQQYKYIZIAYb4RQEHNjAzMDEG
|
||||
-CCsGAQUFBwIBFiVodHRwOi8vd3d3Lmdlb3RydXN0LmNvbS9yZXNvdXJjZXMvY3Bz
|
||||
-MA0GCSqGSIb3DQEBCwUAA4IBAQAWR3NvhaJi4ecqdruJlUIml7xKrKxwUzo/MYM9
|
||||
-PByrmuKxXRx2GqA8DHJXvtOeUODImdZY1wLqzg0pVHzN9cLGkClVo28UqAtCDTqY
|
||||
-bQZ4nvBqox0CCqIopI3CgUY+bWfa3j/+hQ5CKhLetbf7uBunlux3n+zUU5V6/wf0
|
||||
-8goUwFFSsdaOUAsamVy8C8m97e34XsFW201+I6QRoSzUGwWa5BtS9nw4mQVLunKN
|
||||
-QolgBGYq9P1o12v3mUEo1mwkq+YlUy7Igpnioo8jvjCDsSeL+mh/AUnoxphrEC6Y
|
||||
-XorXykuxx8lYmtA225aV7LaB5PLNbxt5h0wQPInkTfpU3Kqm
|
||||
------END CERTIFICATE-----
|
||||
------BEGIN CERTIFICATE-----
|
||||
-MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT
|
||||
-MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
|
||||
-YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG
|
||||
-EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg
|
||||
-R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9
|
||||
-9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq
|
||||
-fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv
|
||||
-iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU
|
||||
-1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+
|
||||
-bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW
|
||||
-MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA
|
||||
-ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l
|
||||
-uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn
|
||||
-Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS
|
||||
-tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF
|
||||
-PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un
|
||||
-hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV
|
||||
-5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw==
|
||||
------END CERTIFICATE-----
|
||||
diff --git a/jdk/test/sun/security/ssl/X509TrustManagerImpl/Symantec/geotrustglobalca-chain.pem b/jdk/test/sun/security/ssl/X509TrustManagerImpl/Symantec/geotrustglobalca-chain.pem
|
||||
deleted file mode 100644
|
||||
index 3249716b..00000000
|
||||
--- a/jdk/test/sun/security/ssl/X509TrustManagerImpl/Symantec/geotrustglobalca-chain.pem
|
||||
+++ /dev/null
|
||||
@@ -1,66 +0,0 @@
|
||||
------BEGIN CERTIFICATE-----
|
||||
-MIIHBjCCBe6gAwIBAgIQanINWwJAuap0V7lFjnfUwTANBgkqhkiG9w0BAQsFADBE
|
||||
-MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMU
|
||||
-R2VvVHJ1c3QgU1NMIENBIC0gRzMwHhcNMTcwNTAzMDAwMDAwWhcNMjAwNTAyMjM1
|
||||
-OTU5WjCBkTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNV
|
||||
-BAcMDU1vdW50YWluIFZpZXcxFzAVBgNVBAoMDkdlb1RydXN0LCBJbmMuMRgwFgYD
|
||||
-VQQLDA9Sb290IDEwIC0gVkFMSUQxIjAgBgNVBAMMGXZhbGlkLXJvb3QxMC5nZW90
|
||||
-cnVzdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTegUYhAh0
|
||||
-P7aF6jzk8dit4Vzddo3hM+J7Eak/+N1sqVUS2HpNd7VO50FrbEWKIRusv7QNtlpY
|
||||
-1Cgrla8M4RAhCB0wkkHXZ1Evz6E1AEFQqNSjyuRQxeEXl+xCL+MF+yAMhDRnHh+E
|
||||
-eSJ3ie0T66saOyaLM9fPpr3xomAQ/IRlP1atJ/Z8XbPo25HuxwzxiWFW+RjwVIfI
|
||||
-gxHz4Okwc1uImDUIDlEu9Uaqqb4jHhxU1EkKMmgEncpqwCROcZMujUkogfB49Z7+
|
||||
-K17r6ARIrUuxqfNPrPwe+O88WgIeDSWffPM67UlvtomZOwuTNdv9OoCX1wUCLS7m
|
||||
-/gZ3rqqqeJvfAgMBAAGjggOkMIIDoDAkBgNVHREEHTAbghl2YWxpZC1yb290MTAu
|
||||
-Z2VvdHJ1c3QuY29tMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMCsGA1UdHwQk
|
||||
-MCIwIKAeoByGGmh0dHA6Ly9nbi5zeW1jYi5jb20vZ24uY3JsMIGdBgNVHSAEgZUw
|
||||
-gZIwgY8GBmeBDAECAjCBhDA/BggrBgEFBQcCARYzaHR0cHM6Ly93d3cuZ2VvdHJ1
|
||||
-c3QuY29tL3Jlc291cmNlcy9yZXBvc2l0b3J5L2xlZ2FsMEEGCCsGAQUFBwICMDUM
|
||||
-M2h0dHBzOi8vd3d3Lmdlb3RydXN0LmNvbS9yZXNvdXJjZXMvcmVwb3NpdG9yeS9s
|
||||
-ZWdhbDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAU
|
||||
-0m/3lvSFP3I8MH0j2oV4m6N8WnwwVwYIKwYBBQUHAQEESzBJMB8GCCsGAQUFBzAB
|
||||
-hhNodHRwOi8vZ24uc3ltY2QuY29tMCYGCCsGAQUFBzAChhpodHRwOi8vZ24uc3lt
|
||||
-Y2IuY29tL2duLmNydDCCAfUGCisGAQQB1nkCBAIEggHlBIIB4QHfAHUA3esdK3oN
|
||||
-T6Ygi4GtgWhwfi6OnQHVXIiNPRHEzbbsvswAAAFbz9h5vQAABAMARjBEAiAx/C0U
|
||||
-5NdHxK4v2oHnstYksb1Vny8PcQkSvgpx9PsZEwIgNTOU70Zc5szG23xdbvtoH5lN
|
||||
-SAoVswiF5gFQS5MGu1sAdgCkuQmQtBhYFIe7E6LMZ3AKPDWYBPkb37jjd80OyA3c
|
||||
-EAAAAVvP2HnZAAAEAwBHMEUCIFGjB8r2H0VDwTUE/aY/Mv+M97sqAvEP1doOcHpg
|
||||
-0qyfAiEArw/S2F7OEcmKGUY1WRBuApfAx5d7hzrTSV/jZv95qJwAdgDuS723dc5g
|
||||
-uuFCaR+r4Z5mow9+X7By2IMAxHuJeqj9ywAAAVvP2HoDAAAEAwBHMEUCIQCH6MFZ
|
||||
-tZF3Cqukt3/69fkU0Y5ePXXx8+xkOXRsIG3EGgIgSmCBWrnmPiiGA3x5QP8I8m4r
|
||||
-Uee0y7s4NQNwjMgHrjwAdgC8eOHfxfY8aEZJM02hD6FfCXlpIAnAgbTz9pF/Ptm4
|
||||
-pQAAAVvP2HqcAAAEAwBHMEUCIA8e2kAVYYuQCtn4PqK98BuHnLm9rC40DboFLCle
|
||||
-SmQsAiEApbCJR05hr9VkNWmjaaUUGGZdVyUu9XX504LHVWyXZDUwDQYJKoZIhvcN
|
||||
-AQELBQADggEBAEtfBfZ2y5uTohvW3h00Kcuop6Nq7Y59GU3MeizPKtx48DB8qHyd
|
||||
-y5bLFwXzsGA1WkwpKzPbROsTGcAAXJHh03bj24AemUr/J/eQcjkfSoNBdHDpiSsk
|
||||
-VZkQK2fGJDiYJ/r9mxKZcgd2pyN3l2OtVtNMv2dnFGF35UkkeqO3jqImwbypAmRX
|
||||
-HdQV9dvW2YDRjzkebNNey6UwY9+YTSzr4da2hcaMHrj588Eqa4DDgNcY9QnE2RzN
|
||||
-giArA+4RlM4AZ3jC2A756I67hrlvH+lhumHLp06hGfMiQJF1aaauFVSa36HKc3C/
|
||||
-ty+sLdJbemEJLAr8uNXggFD+U8TKw1S4LSw=
|
||||
------END CERTIFICATE-----
|
||||
------BEGIN CERTIFICATE-----
|
||||
-MIIETzCCAzegAwIBAgIDAjpvMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT
|
||||
-MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
|
||||
-YWwgQ0EwHhcNMTMxMTA1MjEzNjUwWhcNMjIwNTIwMjEzNjUwWjBEMQswCQYDVQQG
|
||||
-EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg
|
||||
-U1NMIENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDjvn4K
|
||||
-hqPPa209K6GXrUkkTdd3uTR5CKWeop7eRxKSPX7qGYax6E89X/fQp3eaWx8KA7UZ
|
||||
-U9ulIZRpY51qTJEMEEe+EfpshiW3qwRoQjgJZfAU2hme+msLq2LvjafvY3AjqK+B
|
||||
-89FuiGdT7BKkKXWKp/JXPaKDmJfyCn3U50NuMHhiIllZuHEnRaoPZsZVP/oyFysx
|
||||
-j0ag+mkUfJ2fWuLrM04QprPtd2PYw5703d95mnrU7t7dmszDt6ldzBE6B7tvl6QB
|
||||
-I0eVH6N3+liSxsfQvc+TGEK3fveeZerVO8rtrMVwof7UEJrwEgRErBpbeFBFV0xv
|
||||
-vYDLgVwts7x2oR5lAgMBAAGjggFKMIIBRjAfBgNVHSMEGDAWgBTAephojYn7qwVk
|
||||
-DBF9qn1luMrMTjAdBgNVHQ4EFgQU0m/3lvSFP3I8MH0j2oV4m6N8WnwwEgYDVR0T
|
||||
-AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwNgYDVR0fBC8wLTAroCmgJ4Yl
|
||||
-aHR0cDovL2cxLnN5bWNiLmNvbS9jcmxzL2d0Z2xvYmFsLmNybDAvBggrBgEFBQcB
|
||||
-AQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9nMi5zeW1jYi5jb20wTAYDVR0gBEUw
|
||||
-QzBBBgpghkgBhvhFAQc2MDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuZ2VvdHJ1
|
||||
-c3QuY29tL3Jlc291cmNlcy9jcHMwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVN5
|
||||
-bWFudGVjUEtJLTEtNTM5MA0GCSqGSIb3DQEBCwUAA4IBAQCg1Pcs+3QLf2TxzUNq
|
||||
-n2JTHAJ8mJCi7k9o1CAacxI+d7NQ63K87oi+fxfqd4+DYZVPhKHLMk9sIb7SaZZ9
|
||||
-Y73cK6gf0BOEcP72NZWJ+aZ3sEbIu7cT9clgadZM/tKO79NgwYCA4ef7i28heUrg
|
||||
-3Kkbwbf7w0lZXLV3B0TUl/xJAIlvBk4BcBmsLxHA4uYPL4ZLjXvDuacu9PGsFj45
|
||||
-SVGeF0tPEDpbpaiSb/361gsDTUdWVxnzy2v189bPsPX1oxHSIFMTNDcFLENaY9+N
|
||||
-QNaFHlHpURceA1bJ8TCt55sRornQMYGbaLHZ6PPmlH7HrhMvh+3QJbBo+d4IWvMp
|
||||
-zNSS
|
||||
------END CERTIFICATE-----
|
||||
--
|
||||
2.22.0
|
||||
|
||||
@ -1,42 +0,0 @@
|
||||
From 6d1c5b1ee82b2b2481a16f3510078fdc7ddc08f9 Mon Sep 17 00:00:00 2001
|
||||
From: eapen <zhangyipeng7@huawei.com>
|
||||
Date: Tue, 15 Nov 2022 11:26:33 +0800
|
||||
Subject: [PATCH 04/33] 8296480: Fix the problem that the TestPolicy.java case
|
||||
fails because the certificate expires.
|
||||
---
|
||||
jdk/test/java/security/cert/pkix/policyChanges/TestPolicy.java | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/jdk/test/java/security/cert/pkix/policyChanges/TestPolicy.java b/jdk/test/java/security/cert/pkix/policyChanges/TestPolicy.java
|
||||
index a92eee2..b37debf 100644
|
||||
--- a/jdk/test/java/security/cert/pkix/policyChanges/TestPolicy.java
|
||||
+++ b/jdk/test/java/security/cert/pkix/policyChanges/TestPolicy.java
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
+ * Copyright (c) 2002, 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
|
||||
@@ -34,6 +34,7 @@
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
+import java.text.DateFormat;
|
||||
import java.util.*;
|
||||
|
||||
import java.security.Security;
|
||||
@@ -97,6 +98,10 @@ public class TestPolicy {
|
||||
params.setRevocationEnabled(false);
|
||||
params.setInitialPolicies(testCase.initialPolicies);
|
||||
|
||||
+ // Certs expired on 7th Nov 2022
|
||||
+ params.setDate(DateFormat.getDateInstance(DateFormat.MEDIUM,
|
||||
+ Locale.US).parse("June 01, 2022"));
|
||||
+
|
||||
CertPath path = factory.generateCertPath(Arrays.asList(new X509Certificate[] {ee, ca}));
|
||||
|
||||
PKIXCertPathValidatorResult result = (PKIXCertPathValidatorResult)validator.validate(path, params);
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
@ -1,39 +0,0 @@
|
||||
From b8aedd236ca707cfc15eb5daf91aab697a8014ed Mon Sep 17 00:00:00 2001
|
||||
From: eapen <zhangyipeng7@huawei.com>
|
||||
Date: Wed, 23 Nov 2022 08:31:14 +0800
|
||||
Subject: [PATCH 06/33] I68TO2: 8296485: BuildEEBasicConstraints.java test fails with
|
||||
SunCertPathBuilderException
|
||||
---
|
||||
.../CertPathBuilder/targetConstraints/BuildEEBasicConstraints.java | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/jdk/test/java/security/cert/CertPathBuilder/targetConstraints/BuildEEBasicConstraints.java b/jdk/test/java/security/cert/CertPathBuilder/targetConstraints/BuildEEBasicConstraints.java
|
||||
index 6be5562..44926d2 100644
|
||||
--- a/jdk/test/java/security/cert/CertPathBuilder/targetConstraints/BuildEEBasicConstraints.java
|
||||
+++ b/jdk/test/java/security/cert/CertPathBuilder/targetConstraints/BuildEEBasicConstraints.java
|
||||
@@ -46,9 +46,11 @@ import java.security.cert.PKIXCertPathBuilderResult;
|
||||
import java.security.cert.TrustAnchor;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.security.cert.X509CertSelector;
|
||||
+import java.text.DateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
+import java.util.Locale;
|
||||
|
||||
public final class BuildEEBasicConstraints {
|
||||
|
||||
@@ -65,6 +67,11 @@ public final class BuildEEBasicConstraints {
|
||||
PKIXBuilderParameters params = new PKIXBuilderParameters
|
||||
(Collections.singleton(anchor), sel);
|
||||
params.setRevocationEnabled(false);
|
||||
+
|
||||
+ // Certs expired on 7th Nov 2022
|
||||
+ params.setDate(DateFormat.getDateInstance(DateFormat.MEDIUM,
|
||||
+ Locale.US).parse("June 01, 2022"));
|
||||
+
|
||||
X509Certificate eeCert = CertUtils.getCertFromFile("ee.cer");
|
||||
X509Certificate caCert = CertUtils.getCertFromFile("ca.cer");
|
||||
ArrayList<X509Certificate> certs = new ArrayList<X509Certificate>();
|
||||
--
|
||||
1.8.3.1
|
||||
255
8305541-C2-Div-Mod-nodes-without-zero-check-could-be.patch
Normal file
255
8305541-C2-Div-Mod-nodes-without-zero-check-could-be.patch
Normal file
@ -0,0 +1,255 @@
|
||||
From 5a21d735ffa345f956d2c637b4e13f55c907a219 Mon Sep 17 00:00:00 2001
|
||||
From: wangjiawei <wangjiawei80@huawei.com>
|
||||
Date: Fri, 28 Apr 2023 10:41:14 +0800
|
||||
Subject: [PATCH 15/15] 8305541: C2 Div/Mod nodes without zero check could be
|
||||
split through iv phi of loop resulting in SIGFPE
|
||||
|
||||
DTS/AR: DTS2023041008055
|
||||
Summary: <hotspot> : 8305541: C2 Div/Mod nodes without zero check could be split through iv phi of loop resulting in SIGFPE
|
||||
LLT: NA
|
||||
Patch Type: backport
|
||||
Bug url: https://bugs.openjdk.org/browse/JDK-8305541
|
||||
---
|
||||
hotspot/src/share/vm/opto/loopnode.hpp | 4 +-
|
||||
hotspot/src/share/vm/opto/loopopts.cpp | 40 +++++
|
||||
.../c2/TestSplitDivisionThroughPhi.java | 155 ++++++++++++++++++
|
||||
3 files changed, 198 insertions(+), 1 deletion(-)
|
||||
create mode 100644 hotspot/test/compiler/c2/TestSplitDivisionThroughPhi.java
|
||||
|
||||
diff --git a/hotspot/src/share/vm/opto/loopnode.hpp b/hotspot/src/share/vm/opto/loopnode.hpp
|
||||
index 6f70b5065..f8750e54a 100644
|
||||
--- a/hotspot/src/share/vm/opto/loopnode.hpp
|
||||
+++ b/hotspot/src/share/vm/opto/loopnode.hpp
|
||||
@@ -1071,7 +1071,9 @@ private:
|
||||
Node *place_near_use( Node *useblock ) const;
|
||||
Node* try_move_store_before_loop(Node* n, Node *n_ctrl);
|
||||
void try_move_store_after_loop(Node* n);
|
||||
-
|
||||
+ bool cannot_split_division(const Node* n, const Node* region) const;
|
||||
+ static bool is_divisor_counted_loop_phi(const Node* divisor, const Node* loop);
|
||||
+ bool loop_phi_backedge_type_contains_zero(const Node* phi_divisor, const Type* zero) const;
|
||||
bool _created_loop_node;
|
||||
public:
|
||||
void set_created_loop_node() { _created_loop_node = true; }
|
||||
diff --git a/hotspot/src/share/vm/opto/loopopts.cpp b/hotspot/src/share/vm/opto/loopopts.cpp
|
||||
index 20bdb1493..28bfcb75b 100644
|
||||
--- a/hotspot/src/share/vm/opto/loopopts.cpp
|
||||
+++ b/hotspot/src/share/vm/opto/loopopts.cpp
|
||||
@@ -51,6 +51,10 @@ Node *PhaseIdealLoop::split_thru_phi( Node *n, Node *region, int policy ) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ if (cannot_split_division(n, region)) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
int wins = 0;
|
||||
assert(!n->is_CFG(), "");
|
||||
assert(region->is_Region(), "");
|
||||
@@ -200,6 +204,42 @@ Node *PhaseIdealLoop::split_thru_phi( Node *n, Node *region, int policy ) {
|
||||
return phi;
|
||||
}
|
||||
|
||||
+// Return true if 'n' is a Div or Mod node (without zero check If node which was removed earlier) with a loop phi divisor
|
||||
+// of a trip-counted (integer or long) loop with a backedge input that could be zero (include zero in its type range). In
|
||||
+// this case, we cannot split the division to the backedge as it could freely float above the loop exit check resulting in
|
||||
+// a division by zero. This situation is possible because the type of an increment node of an iv phi (trip-counter) could
|
||||
+// include zero while the iv phi does not (see PhiNode::Value() for trip-counted loops where we improve types of iv phis).
|
||||
+// We also need to check other loop phis as they could have been created in the same split-if pass when applying
|
||||
+// PhaseIdealLoop::split_thru_phi() to split nodes through an iv phi.
|
||||
+bool PhaseIdealLoop::cannot_split_division(const Node* n, const Node* region) const {
|
||||
+ const Type* zero;
|
||||
+ switch (n->Opcode()) {
|
||||
+ case Op_DivI:
|
||||
+ case Op_ModI:
|
||||
+ zero = TypeInt::ZERO;
|
||||
+ break;
|
||||
+ case Op_DivL:
|
||||
+ case Op_ModL:
|
||||
+ zero = TypeLong::ZERO;
|
||||
+ break;
|
||||
+ default:
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ assert(n->in(0) == NULL, "divisions with zero check should already have bailed out earlier in split-if");
|
||||
+ Node* divisor = n->in(2);
|
||||
+ return is_divisor_counted_loop_phi(divisor, region) &&
|
||||
+ loop_phi_backedge_type_contains_zero(divisor, zero);
|
||||
+}
|
||||
+
|
||||
+bool PhaseIdealLoop::is_divisor_counted_loop_phi(const Node* divisor, const Node* loop) {
|
||||
+ return loop->is_CountedLoop() && divisor->is_Phi() && divisor->in(0) == loop;
|
||||
+}
|
||||
+
|
||||
+bool PhaseIdealLoop::loop_phi_backedge_type_contains_zero(const Node* phi_divisor, const Type* zero) const {
|
||||
+ return _igvn.type(phi_divisor->in(LoopNode::LoopBackControl))->filter_speculative(zero) != Type::TOP;
|
||||
+}
|
||||
+
|
||||
//------------------------------dominated_by------------------------------------
|
||||
// Replace the dominated test with an obvious true or false. Place it on the
|
||||
// IGVN worklist for later cleanup. Move control-dependent data Nodes on the
|
||||
diff --git a/hotspot/test/compiler/c2/TestSplitDivisionThroughPhi.java b/hotspot/test/compiler/c2/TestSplitDivisionThroughPhi.java
|
||||
new file mode 100644
|
||||
index 000000000..0a59783fa
|
||||
--- /dev/null
|
||||
+++ b/hotspot/test/compiler/c2/TestSplitDivisionThroughPhi.java
|
||||
@@ -0,0 +1,155 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
|
||||
+ * Copyright (c) 2023, Huawei Technologies Co., Ltd. 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
|
||||
+ * under the terms of the GNU General Public License version 2 only, as
|
||||
+ * published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
+ * version 2 for more details (a copy is included in the LICENSE file that
|
||||
+ * accompanied this code).
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License version
|
||||
+ * 2 along with this work; if not, write to the Free Software Foundation,
|
||||
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
+ *
|
||||
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
+ * or visit www.oracle.com if you need additional information or have any
|
||||
+ * questions.
|
||||
+ */
|
||||
+
|
||||
+/**
|
||||
+ * @test
|
||||
+ * @bug 8299259
|
||||
+ * @summary Test various cases of divisions/modulo which should not be split through iv phis.
|
||||
+ * @run main/othervm -Xbatch -XX:+UnlockDiagnosticVMOptions -XX:LoopUnrollLimit=0 -XX:+StressGCM
|
||||
+ * -XX:CompileCommand=compileonly,TestSplitDivisionThroughPhi::* TestSplitDivisionThroughPhi
|
||||
+ */
|
||||
+
|
||||
+/**
|
||||
+ * @test
|
||||
+ * @bug 8299259
|
||||
+ * @summary Test various cases of divisions/modulo which should not be split through iv phis.
|
||||
+ * @run main/othervm -Xbatch -XX:+UnlockDiagnosticVMOptions -XX:LoopUnrollLimit=0 -XX:+StressGCM
|
||||
+ * -XX:CompileCommand=compileonly,TestSplitDivisionThroughPhi::* TestSplitDivisionThroughPhi
|
||||
+ */
|
||||
+
|
||||
+
|
||||
+public class TestSplitDivisionThroughPhi {
|
||||
+ static int iFld;
|
||||
+ static long lFld;
|
||||
+ static boolean flag;
|
||||
+
|
||||
+
|
||||
+ public static void main(String[] strArr) {
|
||||
+ for (int i = 0; i < 5000; i++) {
|
||||
+ testPushDivIThruPhi();
|
||||
+ testPushDivIThruPhiInChain();
|
||||
+ testPushModIThruPhi();
|
||||
+ testPushModIThruPhiInChain();
|
||||
+ testPushDivLThruPhi();
|
||||
+ testPushDivLThruPhiInChain();
|
||||
+ testPushModLThruPhi();
|
||||
+ testPushModLThruPhiInChain();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // Already fixed by JDK-8248552.
|
||||
+ static void testPushDivIThruPhi() {
|
||||
+ for (int i = 10; i > 1; i -= 2) {
|
||||
+ // The Div node is only split in later loop opts phase because the zero divisor check is only removed
|
||||
+ // in IGVN after the first loop opts phase.
|
||||
+ //
|
||||
+ // iv phi i type: [2..10]
|
||||
+ // When splitting the DivI through the iv phi, it ends up on the back edge with the trip count decrement
|
||||
+ // as input which has type [0..8]. We end up executing a division by zero on the last iteration because
|
||||
+ // the DivI it is not pinned to the loop exit test and can freely float above the loop exit check.
|
||||
+ iFld = 10 / i;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // Same as above but with an additional Mul node between the iv phi and the Div node. Both nodes are split through
|
||||
+ // the iv phi in one pass of Split If.
|
||||
+ static void testPushDivIThruPhiInChain() {
|
||||
+ for (int i = 10; i > 1; i -= 2) {
|
||||
+ // Empty one iteration loop which is only removed after split if in first loop opts phase. This prevents
|
||||
+ // that the Mul node is already split through the iv phi while the Div node cannot be split yet due to
|
||||
+ // the zero divisor check which can only be removed in the IGVN after the first loop opts pass.
|
||||
+ for (int j = 0; j < 1; j++) {
|
||||
+ }
|
||||
+ iFld = 10 / (i * 100);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // Already fixed by JDK-8248552.
|
||||
+ static void testPushModIThruPhi() {
|
||||
+ for (int i = 10; i > 1; i -= 2) {
|
||||
+ iFld = 10 / i;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // Same as above but with ModI.
|
||||
+ static void testPushModIThruPhiInChain() {
|
||||
+ for (int i = 10; i > 1; i -= 2) {
|
||||
+ for (int j = 0; j < 1; j++) {
|
||||
+ }
|
||||
+ iFld = 10 / (i * 100);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // Long cases only trigger since JDK-8256655.
|
||||
+
|
||||
+ // Same as above but with DivL.
|
||||
+ static void testPushDivLThruPhi() {
|
||||
+ for (long i = 10; i > 1; i -= 2) {
|
||||
+ lFld = 10L / i;
|
||||
+
|
||||
+ // Loop that is not removed such that we do not transform the outer LongCountedLoop (only done if innermost)
|
||||
+ for (int j = 0; j < 10; j++) {
|
||||
+ flag = !flag;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // Same as above but with DivL.
|
||||
+ static void testPushDivLThruPhiInChain() {
|
||||
+ for (long i = 10; i > 1; i -= 2) {
|
||||
+ for (int j = 0; j < 1; j++) {
|
||||
+ }
|
||||
+ lFld = 10L / (i * 100L);
|
||||
+
|
||||
+ for (int j = 0; j < 10; j++) {
|
||||
+ flag = !flag;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // Same as above but with ModL
|
||||
+ static void testPushModLThruPhi() {
|
||||
+ for (long i = 10; i > 1; i -= 2) {
|
||||
+ lFld = 10L % i;
|
||||
+
|
||||
+ for (int j = 0; j < 10; j++) {
|
||||
+ flag = !flag;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // Same as above but with ModL
|
||||
+ static void testPushModLThruPhiInChain() {
|
||||
+ for (long i = 10; i > 1; i -= 2) {
|
||||
+ for (int j = 0; j < 1; j++) {
|
||||
+ }
|
||||
+ lFld = 10L % (i * 100L);
|
||||
+
|
||||
+ for (int j = 0; j < 10; j++) {
|
||||
+ flag = !flag;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
--
|
||||
2.19.0
|
||||
|
||||
@ -1,67 +0,0 @@
|
||||
From e389786d6785852bf8fedb9ff24294a1518d9bed Mon Sep 17 00:00:00 2001
|
||||
Date: Fri, 22 Jan 2021 15:27:51 +0800
|
||||
Subject: Add ability to configure third port for remote JMX
|
||||
|
||||
Summary: <jmx>:<Add ability to configure third port for remote JMX>
|
||||
LLT: NA
|
||||
Bug url: NA
|
||||
---
|
||||
.../management/AgentConfigurationError.java | 2 ++
|
||||
.../jmxremote/ConnectorBootstrap.java | 19 ++++++++++++++++++-
|
||||
2 files changed, 20 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/jdk/src/share/classes/sun/management/AgentConfigurationError.java b/jdk/src/share/classes/sun/management/AgentConfigurationError.java
|
||||
index 56c430161..d3d67ff31 100644
|
||||
--- a/jdk/src/share/classes/sun/management/AgentConfigurationError.java
|
||||
+++ b/jdk/src/share/classes/sun/management/AgentConfigurationError.java
|
||||
@@ -55,6 +55,8 @@ public class AgentConfigurationError extends Error {
|
||||
"agent.err.invalid.jmxremote.port";
|
||||
public static final String INVALID_JMXREMOTE_RMI_PORT =
|
||||
"agent.err.invalid.jmxremote.rmi.port";
|
||||
+ public static final String INVALID_JMXLOCAL_PORT =
|
||||
+ "agent.err.invalid.jmxlocal.port";
|
||||
public static final String PASSWORD_FILE_NOT_SET =
|
||||
"agent.err.password.file.notset";
|
||||
public static final String PASSWORD_FILE_NOT_READABLE =
|
||||
diff --git a/jdk/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java b/jdk/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java
|
||||
index 56287edbd..0a82c65d1 100644
|
||||
--- a/jdk/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java
|
||||
+++ b/jdk/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java
|
||||
@@ -117,6 +117,8 @@ public final class ConnectorBootstrap {
|
||||
"com.sun.management.jmxremote.host";
|
||||
public static final String RMI_PORT =
|
||||
"com.sun.management.jmxremote.rmi.port";
|
||||
+ public static final String LOCAL_PORT =
|
||||
+ "com.sun.management.jmxlocal.port";
|
||||
public static final String CONFIG_FILE_NAME =
|
||||
"com.sun.management.config.file";
|
||||
public static final String USE_LOCAL_ONLY =
|
||||
@@ -530,9 +532,24 @@ public final class ConnectorBootstrap {
|
||||
localhost = "127.0.0.1";
|
||||
}
|
||||
|
||||
+ // User can specify a port to be used to start Local Connector Server,
|
||||
+ // if port is not specified random one will be allocated.
|
||||
+ int localPort = 0;
|
||||
+ String localPortStr = System.getProperty(PropertyNames.LOCAL_PORT);
|
||||
+ try {
|
||||
+ if (localPortStr != null) {
|
||||
+ localPort = Integer.parseInt(localPortStr);
|
||||
+ }
|
||||
+ } catch (NumberFormatException x) {
|
||||
+ throw new AgentConfigurationError(INVALID_JMXLOCAL_PORT, x, localPortStr);
|
||||
+ }
|
||||
+ if (localPort < 0) {
|
||||
+ throw new AgentConfigurationError(INVALID_JMXLOCAL_PORT, localPortStr);
|
||||
+ }
|
||||
+
|
||||
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
|
||||
try {
|
||||
- JMXServiceURL url = new JMXServiceURL("rmi", localhost, 0);
|
||||
+ JMXServiceURL url = new JMXServiceURL("rmi", localhost, localPort);
|
||||
// Do we accept connections from local interfaces only?
|
||||
Properties props = Agent.getManagementProperties();
|
||||
if (props == null) {
|
||||
--
|
||||
2.19.0
|
||||
|
||||
44
Fix-localtime_r-not-defined-on-windows.patch
Normal file
44
Fix-localtime_r-not-defined-on-windows.patch
Normal file
@ -0,0 +1,44 @@
|
||||
From 2b0e2ff142de992d943a0df1aca605283f3449ab Mon Sep 17 00:00:00 2001
|
||||
From: z30010524 <zhangyunbo7@huawei.com>
|
||||
Date: Thu, 16 Mar 2023 11:06:12 +0800
|
||||
Subject: [PATCH 09/15] Fix localtime_r() not defined on windows
|
||||
|
||||
DTS/AR: DTS2023031516597
|
||||
Summary: <JDK> :Fix localtime_r() not defined on windows, get system time by os::localtime_pd()
|
||||
LLT: NA
|
||||
Patch Type: huawei
|
||||
Bug url: NA
|
||||
---
|
||||
hotspot/src/share/vm/services/memReporter.cpp | 2 +-
|
||||
hotspot/src/share/vm/services/nmtDCmd.cpp | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/hotspot/src/share/vm/services/memReporter.cpp b/hotspot/src/share/vm/services/memReporter.cpp
|
||||
index 8ea363805..9fc309c74 100644
|
||||
--- a/hotspot/src/share/vm/services/memReporter.cpp
|
||||
+++ b/hotspot/src/share/vm/services/memReporter.cpp
|
||||
@@ -298,7 +298,7 @@ void MemSummaryDiffReporter::report_diff() {
|
||||
time_t startTime = NMTDCmd::get_start_time();
|
||||
time_t endTime = time(0);
|
||||
struct tm endTimeTm = {0};
|
||||
- if (localtime_r(&endTime, &endTimeTm) == NULL) {
|
||||
+ if (os::localtime_pd(&endTime, &endTimeTm) == NULL) {
|
||||
out->print_cr("\nNative Memory Tracking:\n");
|
||||
} else {
|
||||
out->print_cr("\nNative Memory Tracking: end time is %d-%02d-%02d %02d:%02d:%02d, elapsed time is %d secs\n",
|
||||
diff --git a/hotspot/src/share/vm/services/nmtDCmd.cpp b/hotspot/src/share/vm/services/nmtDCmd.cpp
|
||||
index 417a58c59..5f6842a99 100644
|
||||
--- a/hotspot/src/share/vm/services/nmtDCmd.cpp
|
||||
+++ b/hotspot/src/share/vm/services/nmtDCmd.cpp
|
||||
@@ -132,7 +132,7 @@ void NMTDCmd::execute(DCmdSource source, TRAPS) {
|
||||
NMTDCmd::set_start_time(time(0));
|
||||
time_t startTime = NMTDCmd::get_start_time();
|
||||
struct tm startTimeTm = {0};
|
||||
- if (localtime_r(&startTime, &startTimeTm) == NULL) {
|
||||
+ if (os::localtime_pd(&startTime, &startTimeTm) == NULL) {
|
||||
output()->print_cr("Baseline succeeded");
|
||||
} else {
|
||||
output()->print_cr("Baseline succeeded, start time is %d-%02d-%02d %02d:%02d:%02d",
|
||||
--
|
||||
2.19.0
|
||||
|
||||
@ -1,44 +0,0 @@
|
||||
From 90eec1e71cb818dae6d0ed1be7f7a7c3fe9da1cf Mon Sep 17 00:00:00 2001
|
||||
From: zhangyipeng <zhangyipeng7@huawei.com>
|
||||
Date: Fri, 21 Oct 2022 11:24:48 +0800
|
||||
Subject: [PATCH] fix windows build Dynamic CDS failure
|
||||
|
||||
---
|
||||
hotspot/make/windows/makefiles/vm.make | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/hotspot/make/windows/makefiles/vm.make b/hotspot/make/windows/makefiles/vm.make
|
||||
index e303da77b..5322a4b4b 100644
|
||||
--- a/hotspot/make/windows/makefiles/vm.make
|
||||
+++ b/hotspot/make/windows/makefiles/vm.make
|
||||
@@ -148,6 +148,7 @@ VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/code
|
||||
VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/interpreter
|
||||
VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/ci
|
||||
VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/classfile
|
||||
+VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/cds
|
||||
VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc_implementation/parallelScavenge
|
||||
VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc_implementation/shared
|
||||
VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc_implementation/parNew
|
||||
@@ -233,6 +234,9 @@ arguments.obj: $(WorkSpace)\src\share\vm\runtime\arguments.cpp
|
||||
{$(COMMONSRC)\share\vm\classfile}.cpp.obj::
|
||||
$(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
|
||||
|
||||
+{$(COMMONSRC)\share\vm\cds}.cpp.obj::
|
||||
+ $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
|
||||
+
|
||||
{$(COMMONSRC)\share\vm\gc_implementation\parallelScavenge}.cpp.obj::
|
||||
$(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
|
||||
|
||||
@@ -316,6 +320,9 @@ arguments.obj: $(WorkSpace)\src\share\vm\runtime\arguments.cpp
|
||||
{$(ALTSRC)\share\vm\classfile}.cpp.obj::
|
||||
$(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
|
||||
|
||||
+{$(ALTSRC)\share\vm\cds}.cpp.obj::
|
||||
+ $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
|
||||
+
|
||||
{$(ALTSRC)\share\vm\gc_implementation\parallelScavenge}.cpp.obj::
|
||||
$(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $<
|
||||
|
||||
--
|
||||
2.22.0
|
||||
|
||||
@ -23,7 +23,7 @@ index e2de2d3e55..7d0431980e 100644
|
||||
+fi
|
||||
+
|
||||
# CriticalJNINatives is not supported for aarch64
|
||||
if [ $VM_CPU == "aarch64" ]; then
|
||||
if [ $VM_CPU = "aarch64" ]; then
|
||||
echo "Test Passed"
|
||||
@@ -73,7 +78,7 @@ THIS_DIR=.
|
||||
cp ${TESTSRC}${FS}*.java ${THIS_DIR}
|
||||
|
||||
@ -2649,11 +2649,10 @@ diff --git a/hotspot/test/testlibrary/com/oracle/java/testlibrary/Utils.java b/h
|
||||
index 902e3b13..be48a7e6 100644
|
||||
--- a/hotspot/test/testlibrary/com/oracle/java/testlibrary/Utils.java
|
||||
+++ b/hotspot/test/testlibrary/com/oracle/java/testlibrary/Utils.java
|
||||
@@ -370,4 +370,57 @@ public final class Utils {
|
||||
@@ -395,4 +395,56 @@ public final class Utils {
|
||||
return Files.createTempDirectory(dir, prefix);
|
||||
}
|
||||
return new String(hexView);
|
||||
}
|
||||
+
|
||||
|
||||
+ // This method is intended to be called from a jtreg test.
|
||||
+ // It will identify the name of the test by means of stack walking.
|
||||
+ // It can handle both jtreg tests and a testng tests wrapped inside jtreg tests.
|
||||
@ -3520,7 +3519,7 @@ index 909e09f9..f06b1cbb 100644
|
||||
import java.net.URL;
|
||||
|
||||
import sun.hotspot.parser.DiagnosticCommand;
|
||||
@@ -137,6 +139,31 @@ public class WhiteBox {
|
||||
@@ -140,6 +142,31 @@ public class WhiteBox {
|
||||
}
|
||||
public native boolean isMethodCompilable(Executable method, int compLevel, boolean isOsr);
|
||||
public native boolean isMethodQueuedForCompilation(Executable method);
|
||||
@ -3552,12 +3551,6 @@ index 909e09f9..f06b1cbb 100644
|
||||
public int deoptimizeMethod(Executable method) {
|
||||
return deoptimizeMethod(method, false /*not osr*/);
|
||||
}
|
||||
@@ -253,5 +280,4 @@ public class WhiteBox {
|
||||
// Container testing
|
||||
public native boolean isContainerized();
|
||||
public native void printOsInfo();
|
||||
-
|
||||
}
|
||||
diff --git a/hotspot/test/testlibrary/whitebox/sun/hotspot/code/Compiler.java b/hotspot/test/testlibrary/whitebox/sun/hotspot/code/Compiler.java
|
||||
new file mode 100644
|
||||
index 00000000..bb06f1af
|
||||
|
||||
@ -91,7 +91,7 @@ index 00000000..9b614024
|
||||
--- /dev/null
|
||||
+++ b/version.txt
|
||||
@@ -0,0 +1 @@
|
||||
+8.362.9.0.13
|
||||
+8.372.7.0.13
|
||||
--
|
||||
2.23.0
|
||||
|
||||
|
||||
@ -1,11 +1,7 @@
|
||||
From f08447dcb86c2637fc306de73572c5d8de14520f Mon Sep 17 00:00:00 2001
|
||||
From: zhangyipeng <zhangyipeng7@huawei.com>
|
||||
Date: Tue, 16 Mar 2021 10:11:31 +0800
|
||||
Subject: [PATCH] [Huawei]fix log bug && enhance aes/hmac performance
|
||||
|
||||
|
||||
|
||||
Signed-off-by: He Dongbo <hedongbo@huawei.com>
|
||||
---
|
||||
common/autoconf/generated-configure.sh | 44 ++++++-----
|
||||
common/autoconf/toolchain_windows.m4 | 20 +++--
|
||||
@ -182,19 +178,6 @@ index a405eb336..e5aed4418 100644
|
||||
!if "$(BUILDARCH)" == "i486"
|
||||
LD_FLAGS = $(SAFESEH_FLAG) $(LD_FLAGS)
|
||||
!endif
|
||||
diff --git a/hotspot/make/windows/makefiles/vm.make b/hotspot/make/windows/makefiles/vm.make
|
||||
index 082232719..b46354a5e 100644
|
||||
--- a/hotspot/make/windows/makefiles/vm.make
|
||||
+++ b/hotspot/make/windows/makefiles/vm.make
|
||||
@@ -129,7 +129,7 @@ CXX_DONT_USE_PCH=/D DONT_USE_PRECOMPILED_HEADER
|
||||
|
||||
!if "$(USE_PRECOMPILED_HEADER)" != "0"
|
||||
CXX_USE_PCH=/Fp"vm.pch" /Yu"precompiled.hpp"
|
||||
-!if "$(COMPILER_NAME)" == "VS2012" || "$(COMPILER_NAME)" == "VS2013" || "$(COMPILER_NAME)" == "VS2015" || "$(COMPILER_NAME)" == "VS2017"
|
||||
+!if "$(COMPILER_NAME)" == "VS2012" || "$(COMPILER_NAME)" == "VS2013" || "$(COMPILER_NAME)" == "VS2015" || "$(COMPILER_NAME)" == "VS2017" || "$(COMPILER_NAME)" == "VS2019"
|
||||
# VS2012 and later require this object file to be listed:
|
||||
LD_FLAGS=$(LD_FLAGS) _build_pch_file.obj
|
||||
!endif
|
||||
diff --git a/hotspot/src/share/vm/runtime/os.cpp b/hotspot/src/share/vm/runtime/os.cpp
|
||||
index f5182ea75..3242c6666 100644
|
||||
--- a/hotspot/src/share/vm/runtime/os.cpp
|
||||
|
||||
@ -46,21 +46,6 @@ diff --git a/jdk/test/sun/security/lib/cacerts/VerifyCACerts.java b/jdk/test/sun
|
||||
index c1423dc5b..8bca06c52 100644
|
||||
--- a/jdk/test/sun/security/lib/cacerts/VerifyCACerts.java
|
||||
+++ b/jdk/test/sun/security/lib/cacerts/VerifyCACerts.java
|
||||
@@ -53,12 +53,12 @@ public class VerifyCACerts {
|
||||
+ File.separator + "security" + File.separator + "cacerts";
|
||||
|
||||
// The numbers of certs now.
|
||||
- private static final int COUNT = 84;
|
||||
+ private static final int COUNT = 83;
|
||||
|
||||
// SHA-256 of cacerts, can be generated with
|
||||
// shasum -a 256 cacerts | sed -e 's/../&:/g' | tr '[:lower:]' '[:upper:]' | cut -c1-95
|
||||
private static final String CHECKSUM
|
||||
- = "D3:05:21:64:FA:D7:CD:29:E8:CB:57:E7:47:ED:79:9B:47:D8:0E:75:2D:CA:83:BB:86:AF:D9:43:FD:3E:17:85";
|
||||
+ = "2D:04:88:6C:52:53:54:EB:38:2D:BC:E0:AF:B7:82:F4:9E:32:A8:1A:1B:A3:AE:CF:25:CB:C2:F6:0F:4E:E1:20";
|
||||
|
||||
// map of cert alias to SHA-256 fingerprint
|
||||
@SuppressWarnings("serial")
|
||||
@@ -111,8 +111,6 @@ public class VerifyCACerts {
|
||||
"7E:37:CB:8B:4C:47:09:0C:AB:36:55:1B:A6:F4:5D:B8:40:68:0F:BA:16:6A:95:2D:B1:00:71:7F:43:05:3F:C2");
|
||||
put("digicerthighassuranceevrootca [jdk]",
|
||||
|
||||
@ -46,7 +46,7 @@ index 54e1bfa0d..c1423dc5b 100644
|
||||
// shasum -a 256 cacerts | sed -e 's/../&:/g' | tr '[:lower:]' '[:upper:]' | cut -c1-95
|
||||
private static final String CHECKSUM
|
||||
- = "2D:04:88:6C:52:53:54:EB:38:2D:BC:E0:AF:B7:82:F4:9E:32:A8:1A:1B:A3:AE:CF:25:CB:C2:F6:0F:4E:E1:20";
|
||||
+ = "D3:05:21:64:FA:D7:CD:29:E8:CB:57:E7:47:ED:79:9B:47:D8:0E:75:2D:CA:83:BB:86:AF:D9:43:FD:3E:17:85";
|
||||
+ = "DE:42:B4:05:C8:64:19:5A:16:14:D8:F2:04:DE:66:D6:1B:86:BD:D3:F7:05:75:31:4F:B5:23:FE:8D:58:0B:49";
|
||||
|
||||
// map of cert alias to SHA-256 fingerprint
|
||||
@SuppressWarnings("serial")
|
||||
|
||||
114
jcmd-mnt-add-start-time-and-end-time.patch
Normal file
114
jcmd-mnt-add-start-time-and-end-time.patch
Normal file
@ -0,0 +1,114 @@
|
||||
From d16c3a864883eade51aac931db1ff403e90ac959 Mon Sep 17 00:00:00 2001
|
||||
From: z30010524 <zhangyunbo7@huawei.com>
|
||||
Date: Tue, 7 Feb 2023 15:31:05 +0000
|
||||
Subject: [PATCH 08/15] jcmd mnt add start time and end time
|
||||
|
||||
DTS/AR: AR.SR.02ce7e6e.001
|
||||
Summary: <JDK> :jcmd mnt add start time and end time
|
||||
LLT: NA
|
||||
Patch Type:huawei
|
||||
Bug url: NA
|
||||
---
|
||||
hotspot/src/share/vm/services/memReporter.cpp | 15 ++++++++++++++-
|
||||
hotspot/src/share/vm/services/nmtDCmd.cpp | 14 +++++++++++++-
|
||||
hotspot/src/share/vm/services/nmtDCmd.hpp | 9 +++++++++
|
||||
3 files changed, 36 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/hotspot/src/share/vm/services/memReporter.cpp b/hotspot/src/share/vm/services/memReporter.cpp
|
||||
index a324890d3..8ea363805 100644
|
||||
--- a/hotspot/src/share/vm/services/memReporter.cpp
|
||||
+++ b/hotspot/src/share/vm/services/memReporter.cpp
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "precompiled.hpp"
|
||||
|
||||
#include "memory/allocation.hpp"
|
||||
+#include "services/nmtDCmd.hpp"
|
||||
#include "services/mallocTracker.hpp"
|
||||
#include "services/memReporter.hpp"
|
||||
#include "services/virtualMemoryTracker.hpp"
|
||||
@@ -294,7 +295,19 @@ void MemDetailReporter::report_virtual_memory_region(const ReservedMemoryRegion*
|
||||
void MemSummaryDiffReporter::report_diff() {
|
||||
const char* scale = current_scale();
|
||||
outputStream* out = output();
|
||||
- out->print_cr("\nNative Memory Tracking:\n");
|
||||
+ time_t startTime = NMTDCmd::get_start_time();
|
||||
+ time_t endTime = time(0);
|
||||
+ struct tm endTimeTm = {0};
|
||||
+ if (localtime_r(&endTime, &endTimeTm) == NULL) {
|
||||
+ out->print_cr("\nNative Memory Tracking:\n");
|
||||
+ } else {
|
||||
+ out->print_cr("\nNative Memory Tracking: end time is %d-%02d-%02d %02d:%02d:%02d, elapsed time is %d secs\n",
|
||||
+ static_cast<int>(endTimeTm.tm_year) + START_YEAR,
|
||||
+ static_cast<int>(endTimeTm.tm_mon) + 1,
|
||||
+ static_cast<int>(endTimeTm.tm_mday), static_cast<int>(endTimeTm.tm_hour),
|
||||
+ static_cast<int>(endTimeTm.tm_min), static_cast<int>(endTimeTm.tm_sec),
|
||||
+ static_cast<int>(endTime - startTime));
|
||||
+ }
|
||||
|
||||
// Overall diff
|
||||
out->print("Total: ");
|
||||
diff --git a/hotspot/src/share/vm/services/nmtDCmd.cpp b/hotspot/src/share/vm/services/nmtDCmd.cpp
|
||||
index 2635bbb6e..417a58c59 100644
|
||||
--- a/hotspot/src/share/vm/services/nmtDCmd.cpp
|
||||
+++ b/hotspot/src/share/vm/services/nmtDCmd.cpp
|
||||
@@ -73,6 +73,7 @@ size_t NMTDCmd::get_scale(const char* scale) const {
|
||||
return NMTUtil::scale_from_name(scale);
|
||||
}
|
||||
|
||||
+time_t NMTDCmd::_start_time = 0;
|
||||
void NMTDCmd::execute(DCmdSource source, TRAPS) {
|
||||
// Check NMT state
|
||||
// native memory tracking has to be on
|
||||
@@ -128,7 +129,18 @@ void NMTDCmd::execute(DCmdSource source, TRAPS) {
|
||||
if (!baseline.baseline(MemTracker::tracking_level() != NMT_detail)) {
|
||||
output()->print_cr("Baseline failed");
|
||||
} else {
|
||||
- output()->print_cr("Baseline succeeded");
|
||||
+ NMTDCmd::set_start_time(time(0));
|
||||
+ time_t startTime = NMTDCmd::get_start_time();
|
||||
+ struct tm startTimeTm = {0};
|
||||
+ if (localtime_r(&startTime, &startTimeTm) == NULL) {
|
||||
+ output()->print_cr("Baseline succeeded");
|
||||
+ } else {
|
||||
+ output()->print_cr("Baseline succeeded, start time is %d-%02d-%02d %02d:%02d:%02d",
|
||||
+ static_cast<int>(startTimeTm.tm_year) + START_YEAR,
|
||||
+ static_cast<int>(startTimeTm.tm_mon) + 1,
|
||||
+ static_cast<int>(startTimeTm.tm_mday), static_cast<int>(startTimeTm.tm_hour),
|
||||
+ static_cast<int>(startTimeTm.tm_min), static_cast<int>(startTimeTm.tm_sec));
|
||||
+ }
|
||||
}
|
||||
} else if (_summary_diff.value()) {
|
||||
MemBaseline& baseline = MemTracker::get_baseline();
|
||||
diff --git a/hotspot/src/share/vm/services/nmtDCmd.hpp b/hotspot/src/share/vm/services/nmtDCmd.hpp
|
||||
index df1ab367f..fc7af5c8d 100644
|
||||
--- a/hotspot/src/share/vm/services/nmtDCmd.hpp
|
||||
+++ b/hotspot/src/share/vm/services/nmtDCmd.hpp
|
||||
@@ -32,6 +32,8 @@
|
||||
#include "services/memBaseline.hpp"
|
||||
#include "services/mallocTracker.hpp"
|
||||
|
||||
+const int START_YEAR = 1900; // tm struct, the number of years since 1900.
|
||||
+
|
||||
/**
|
||||
* Native memory tracking DCmd implementation
|
||||
*/
|
||||
@@ -61,9 +63,16 @@ class NMTDCmd: public DCmdWithParser {
|
||||
return p;
|
||||
}
|
||||
static int num_arguments();
|
||||
+ static void set_start_time(const time_t &time) {
|
||||
+ _start_time = time;
|
||||
+ }
|
||||
+ static time_t get_start_time() {
|
||||
+ return _start_time;
|
||||
+ }
|
||||
virtual void execute(DCmdSource source, TRAPS);
|
||||
|
||||
private:
|
||||
+ static time_t _start_time;
|
||||
void report(bool summaryOnly, size_t scale);
|
||||
void report_diff(bool summaryOnly, size_t scale);
|
||||
|
||||
--
|
||||
2.19.0
|
||||
|
||||
Binary file not shown.
@ -146,13 +146,13 @@
|
||||
%global origin_nice OpenJDK
|
||||
%global top_level_dir_name %{origin}
|
||||
%global repo jdk8u
|
||||
%global revision jdk8u362-b09
|
||||
%global revision jdk8u372-b07
|
||||
%global full_revision %{repo}-%{revision}
|
||||
# Define IcedTea version used for SystemTap tapsets and desktop files
|
||||
%global icedteaver 3.15.0
|
||||
|
||||
%global updatever 362
|
||||
%global buildver b09
|
||||
%global updatever 372
|
||||
%global buildver b07
|
||||
# priority must be 7 digits in total. The expression is workarounding tip
|
||||
%global priority 1800%{updatever}
|
||||
|
||||
@ -916,7 +916,7 @@ Provides: java-%{javaver}-%{origin}-accessibility%{?1} = %{epoch}:%{version}-%{r
|
||||
|
||||
Name: java-%{javaver}-%{origin}
|
||||
Version: %{javaver}.%{updatever}.%{buildver}
|
||||
Release: 3
|
||||
Release: 0
|
||||
# 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
|
||||
# also included the epoch in their virtual provides. This created a
|
||||
@ -996,7 +996,6 @@ Patch67: 8165860.patch
|
||||
Patch70: 8164948.patch
|
||||
|
||||
# 8u242
|
||||
Patch75: Add-ability-to-configure-third-port-for-remote-JMX.patch
|
||||
Patch83: 8204947.patch
|
||||
Patch85: 8139041.patch
|
||||
|
||||
@ -1145,14 +1144,10 @@ Patch259: fix-dumped-heap-using-jhat-parsing-to-appear-failed-to-resolve-object-
|
||||
Patch261: revert-fPIC-and-security-compilation-flag-on.patch
|
||||
Patch262: add-configuration-option-of-huawei-internal-version-shown-in-release-file.patch
|
||||
Patch263: The-code-style-is-fixed-and-test-cases-are-added.patch
|
||||
Patch264: 8287109-Distrust-failed-with-CertificateExpired.patch
|
||||
|
||||
# 8u352
|
||||
Patch265: cve-2022-37434-Fix-a-bug-when-getting-a-gzip-header-extra-field-with-inflate.patch
|
||||
Patch266: 8065895-Synchronous-signals-during-error-reporting-may-terminate-or-hang-vm-process.patch
|
||||
Patch267: Huawei-fix-windows-build-Dynamic-CDS-failure.patch
|
||||
Patch268: 8296480-Fix-the-problem-that-the-TestPolicy.java-cas.patch
|
||||
Patch269: 8296485-BuildEEBasicConstraints.java-test-fails-with.patch
|
||||
Patch273: 8257695-linux-Add-process-memory-information-to-hs-e.patch
|
||||
Patch274: 8261167-print_process_memory_info-add-a-close-call-a.patch
|
||||
Patch275: 8268893-jcmd-to-trim-the-glibc-heap.patch
|
||||
@ -1186,6 +1181,13 @@ Patch300: Disable-no-compressedOop-cds-on-x86-32.patch
|
||||
Patch301: fix-SUSE-x86_32-build-failure.patch
|
||||
Patch302: fix-the-issue-that-cert-of-geotrustglobalca-expired.patch
|
||||
|
||||
# 8u372
|
||||
Patch303: 8074354-Make-CreateMinidumpOnCrash-a-new-name-and-av.patch
|
||||
Patch304: jcmd-mnt-add-start-time-and-end-time.patch
|
||||
Patch305: Fix-localtime_r-not-defined-on-windows.patch
|
||||
Patch306: 8057743-process-Synchronize-exiting-of-threads-and-p.patch
|
||||
Patch307: 8305541-C2-Div-Mod-nodes-without-zero-check-could-be.patch
|
||||
|
||||
#############################################
|
||||
#
|
||||
# Upstreamable patches
|
||||
@ -1545,7 +1547,6 @@ pushd %{top_level_dir_name}
|
||||
%patch63 -p1
|
||||
%patch67 -p1
|
||||
%patch70 -p1
|
||||
%patch75 -p1
|
||||
%patch83 -p1
|
||||
%patch85 -p1
|
||||
%patch86 -p1
|
||||
@ -1672,12 +1673,8 @@ pushd %{top_level_dir_name}
|
||||
%patch261 -p1
|
||||
%patch262 -p1
|
||||
%patch263 -p1
|
||||
%patch264 -p1
|
||||
%patch265 -p1
|
||||
%patch266 -p1
|
||||
%patch267 -p1
|
||||
%patch268 -p1
|
||||
%patch269 -p1
|
||||
%patch273 -p1
|
||||
%patch274 -p1
|
||||
%patch275 -p1
|
||||
@ -1708,6 +1705,11 @@ pushd %{top_level_dir_name}
|
||||
%patch300 -p1
|
||||
%patch301 -p1
|
||||
%patch302 -p1
|
||||
%patch303 -p1
|
||||
%patch304 -p1
|
||||
%patch305 -p1
|
||||
%patch306 -p1
|
||||
%patch307 -p1
|
||||
popd
|
||||
|
||||
# System library fixes
|
||||
@ -2332,6 +2334,29 @@ cjc.mainProgram(arg)
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Fri May 6 2023 crash888 <wangmengqi13@huawei.com> - 1:1.8.0.372-b07.0
|
||||
- deleted Add-ability-to-configure-third-port-for-remote-JMX.patch
|
||||
- deleted 8287109-Distrust-failed-with-CertificateExpired.patch
|
||||
- deleted Huawei-fix-windows-build-Dynamic-CDS-failure.patch
|
||||
- deleted 8296480-Fix-the-problem-that-the-TestPolicy.java-cas.patch
|
||||
- deleted 8296485-BuildEEBasicConstraints.java-test-fails-with.patch
|
||||
- modified 8202951-Support-default-jsa.patch
|
||||
- modified 8204595-add-more-thread-related-system-settings-info.patch
|
||||
- modified 8257695-linux-Add-process-memory-information-to-hs-e.patch
|
||||
- modified add-appcds-test-case.patch
|
||||
- modified fix-log-bug-enhance-aes-hmac-performance.patch
|
||||
- modified Test8167409.sh-fails-to-run-with-32bit-jdk-on-64bit-.patch
|
||||
- modified update-cacerts-and-VerifyCACerts.java-test.patch
|
||||
- modified add-missing-test-case.patch
|
||||
- modified fix-the-issue-that-cert-of-geotrustglobalca-expired.patch
|
||||
- modified fix_X509TrustManagerImpl_symantec_distrust.patch
|
||||
- add 8074354-Make-CreateMinidumpOnCrash-a-new-name-and-av.patch
|
||||
- add jcmd-mnt-add-start-time-and-end-time.patch
|
||||
- add Fix-localtime_r-not-defined-on-windows.patch
|
||||
- add 8057743-process-Synchronize-exiting-of-threads-and-p.patch
|
||||
- add 8305541-C2-Div-Mod-nodes-without-zero-check-could-be.patch
|
||||
- upgrade to jdk8u372-b07
|
||||
|
||||
* Fri Mar 24 2023 wanghao_hw<wanghao564@huawei.com> - 1:1.8.0.362-b09.3
|
||||
- add fix-the-issue-that-cert-of-geotrustglobalca-expired.patch
|
||||
|
||||
|
||||
@ -1,11 +1,7 @@
|
||||
From 1125b6be8c484b41b46954a38b6e01861157b6d7 Mon Sep 17 00:00:00 2001
|
||||
From: zhangyipeng <zhangyipeng7@huawei.com>
|
||||
Date: Tue, 20 Apr 2021 10:40:35 +0800
|
||||
Subject: [PATCH] [Huawei]update cacerts and VerifyCACerts.java test
|
||||
|
||||
Offering: Cloud Compiler JDK
|
||||
|
||||
Signed-off-by: Wang Kun <wangkun49@huawei.com>
|
||||
---
|
||||
jdk/make/data/cacerts/addtrustexternalca | 32 -----------------
|
||||
jdk/make/data/cacerts/addtrustqualifiedca | 32 -----------------
|
||||
@ -261,13 +257,13 @@ index dd107fc..791ddb6 100644
|
||||
+ File.separator + "security" + File.separator + "cacerts";
|
||||
|
||||
// The numbers of certs now.
|
||||
- private static final int COUNT = 89;
|
||||
- private static final int COUNT = 90;
|
||||
+ private static final int COUNT = 83;
|
||||
|
||||
// SHA-256 of cacerts, can be generated with
|
||||
// shasum -a 256 cacerts | sed -e 's/../&:/g' | tr '[:lower:]' '[:upper:]' | cut -c1-95
|
||||
private static final String CHECKSUM
|
||||
- = "CC:AD:BB:49:70:97:3F:42:AD:73:91:A0:A2:C4:B8:AA:D1:95:59:F3:B3:22:09:2A:1F:2C:AB:04:47:08:EF:AA";
|
||||
- = "21:8C:35:29:4C:E2:49:D2:83:30:DF:8B:5E:39:F8:8C:D6:C5:2B:59:05:32:74:E5:79:A5:91:9F:3C:57:B9:E3";
|
||||
+ = "2D:04:88:6C:52:53:54:EB:38:2D:BC:E0:AF:B7:82:F4:9E:32:A8:1A:1B:A3:AE:CF:25:CB:C2:F6:0F:4E:E1:20";
|
||||
|
||||
// map of cert alias to SHA-256 fingerprint
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user