[crac] RFR: Merge jdk:jdk-25+14

Dmitry Cherepanov dcherepanov at openjdk.org
Tue Jun 3 12:33:27 UTC 2025


This PR includes merges for tags between jdk-25+11 and jdk-25+14, attaching output of --diff-merges=remerge for each merge

<details>

<summary>jdk-25+11</summary>


commit e16e79c9aa23cbb795bfe44f3562ced6261841f3
Merge: 19d203aee40 0131c1bfd8c
Author: Dmitry Cherepanov <dcherepanov at azul.com>
Date:   Mon Jun 2 14:36:10 2025 +0400

    Merge with jdk-25+11

diff --git a/make/test/BuildTestLib.gmk b/make/test/BuildTestLib.gmk
remerge CONFLICT (content): Merge conflict in make/test/BuildTestLib.gmk
index a37fbf7dd26..2a7ffaa525e 100644
--- a/make/test/BuildTestLib.gmk
+++ b/make/test/BuildTestLib.gmk
@@ -53,17 +53,13 @@ $(eval $(call SetupJavaCompilation, BUILD_WB_JAR, \
 TARGETS += $(BUILD_WB_JAR)
 
 ifeq ($(call isTargetOs, linux), false)
-    BUILD_TEST_LIB_JAR_EXCLUDES := jdk/test/lib/containers
+    BUILD_TEST_LIB_JAR_EXCLUDES := jdk/test/lib/containers/cgroup jdk/test/lib/containers/systemd
 endif
 
 $(eval $(call SetupJavaCompilation, BUILD_TEST_LIB_JAR, \
     TARGET_RELEASE := $(TARGET_RELEASE_NEWJDK_UPGRADED), \
     SRC := $(TEST_LIB_SOURCE_DIR), \
-<<<<<<< 19d203aee40 (8357984: [CRaC] Improve new properties installation code)
-    EXCLUDES := jdk/test/lib/containers/cgroup jdk/test/lib/containers/systemd jdk/test/lib/security, \
-=======
     EXCLUDES := $(BUILD_TEST_LIB_JAR_EXCLUDES), \
->>>>>>> 0131c1bfd8c (8349953: Avoid editing AOTConfiguration file in "make test JTREG=AOT_JDK=true")
     BIN := $(TEST_LIB_SUPPORT)/test-lib_classes, \
     HEADERS := $(TEST_LIB_SUPPORT)/test-lib_headers, \
     JAR := $(TEST_LIB_SUPPORT)/test-lib.jar, \


</details>

Resolved conflict after [JDK-8346050](https://bugs.openjdk.org/browse/JDK-8346050)

<details>

<summary>jdk-25+12</summary>


commit 5d7098526ef5333eb8002ef7611c0e2441bccef8
Merge: e16e79c9aa2 78c18cfbcee
Author: Dmitry Cherepanov <dcherepanov at azul.com>
Date:   Tue Jun 3 00:05:47 2025 +0400

    Merge with jdk-25+12

diff --git a/src/hotspot/share/classfile/classLoader.cpp b/src/hotspot/share/classfile/classLoader.cpp
remerge CONFLICT (content): Merge conflict in src/hotspot/share/classfile/classLoader.cpp
index 2963d66d561..2449dbc46b4 100644
--- a/src/hotspot/share/classfile/classLoader.cpp
+++ b/src/hotspot/share/classfile/classLoader.cpp
@@ -745,7 +745,6 @@ void ClassLoader::add_to_boot_append_entries(ClassPathEntry *new_entry) {
   }
 }
 
-<<<<<<< e16e79c9aa2 (Merge with jdk-25+11)
 GrowableArray<int> ClassLoader::get_classpath_entry_fds() {
   GrowableArray<int> fds;
   assert(Thread::current()->is_VM_thread(), "should be called from VM op");
@@ -755,58 +754,9 @@ GrowableArray<int> ClassLoader::get_classpath_entry_fds() {
       fds.append(((ClassPathZipEntry *) entry)->get_fd());
     }
   }
-#if INCLUDE_CDS
-  // Probably not needed as _app_classpath_entries is filled only when dumping CDS classes
-  for (ClassPathEntry *entry = _app_classpath_entries; entry != nullptr; entry = entry->next()) {
-    if (entry->is_jar_file()) {
-      fds.append(((ClassPathZipEntry *) entry)->get_fd());
-    }
-  }
-#endif // INCLUDE_CDS
   return fds;
 }
 
-// Record the path entries specified in -cp during dump time. The recorded
-// information will be used at runtime for loading the archived app classes.
-//
-// Note that at dump time, ClassLoader::_app_classpath_entries are NOT used for
-// loading app classes. Instead, the app class are loaded by the
-// jdk/internal/loader/ClassLoaders$AppClassLoader instance.
-bool ClassLoader::add_to_app_classpath_entries(JavaThread* current,
-                                               ClassPathEntry* entry,
-                                               bool check_for_duplicates) {
-#if INCLUDE_CDS
-  assert(entry != nullptr, "ClassPathEntry should not be nullptr");
-  ClassPathEntry* e = _app_classpath_entries;
-  if (check_for_duplicates) {
-    while (e != nullptr) {
-      if (strcmp(e->name(), entry->name()) == 0 &&
-          e->from_class_path_attr() == entry->from_class_path_attr()) {
-        // entry already exists
-        return false;
-      }
-      e = e->next();
-    }
-  }
-
-  // The entry does not exist, add to the list
-  if (_app_classpath_entries == nullptr) {
-    assert(_last_app_classpath_entry == nullptr, "Sanity");
-    _app_classpath_entries = _last_app_classpath_entry = entry;
-  } else {
-    _last_app_classpath_entry->set_next(entry);
-    _last_app_classpath_entry = entry;
-  }
-
-  if (entry->is_jar_file()) {
-    ClassLoaderExt::process_jar_manifest(current, entry);
-  }
-#endif
-  return true;
-}
-
-=======
->>>>>>> 78c18cfbcee (8349399: GHA: Add static-jdk build on linux-x64)
 // Returns true IFF the file/dir exists and the entry was successfully created.
 bool ClassLoader::update_class_path_entry_list(JavaThread* current, const char *path) {
   struct stat st;
diff --git a/src/hotspot/share/logging/logAsyncWriter.cpp b/src/hotspot/share/logging/logAsyncWriter.cpp
remerge CONFLICT (content): Merge conflict in src/hotspot/share/logging/logAsyncWriter.cpp
index 8214650364f..b9bdf787ea8 100644
--- a/src/hotspot/share/logging/logAsyncWriter.cpp
+++ b/src/hotspot/share/logging/logAsyncWriter.cpp
@@ -211,19 +211,14 @@ bool AsyncLogWriter::enqueue(LogFileStreamOutput& output, LogMessageBuffer::Iter
 }
 
 AsyncLogWriter::AsyncLogWriter()
-<<<<<<< e16e79c9aa2 (Merge with jdk-25+11)
-  : _flush_sem(0), _lock(), _block_async(), _data_available(false),
-    _initialized(false),
-    _stats() {
-=======
 : _flush_sem(0),
   _producer_lock(),
   _consumer_lock(),
+  _block_async(),
   _data_available(false),
   _initialized(false),
   _stats(),
   _stalled_message(nullptr) {
->>>>>>> 78c18cfbcee (8349399: GHA: Add static-jdk build on linux-x64)
 
   size_t size = AsyncLogBufferSize / 2;
   _buffer = new Buffer(size);
@@ -295,14 +290,11 @@ void AsyncLogWriter::run() {
       });
       _data_available = false;
     }
-<<<<<<< e16e79c9aa2 (Merge with jdk-25+11)
-    write(snapshot);
+
+    bool saw_flush_token = write(snapshot);
 
     _block_async.lock();
     _block_async.unlock();
-=======
-
-    bool saw_flush_token = write(snapshot);
 
     // Any stalled message must be written *after* the buffer has been written.
     // This is because we try hard to output messages in program-order.
@@ -318,7 +310,6 @@ void AsyncLogWriter::run() {
     if (saw_flush_token) {
       _flush_sem.signal(1);
     }
->>>>>>> 78c18cfbcee (8349399: GHA: Add static-jdk build on linux-x64)
   }
 }
 
diff --git a/src/hotspot/share/logging/logAsyncWriter.hpp b/src/hotspot/share/logging/logAsyncWriter.hpp
remerge CONFLICT (content): Merge conflict in src/hotspot/share/logging/logAsyncWriter.hpp
index 72d86571ef6..7d678e8f7be 100644
--- a/src/hotspot/share/logging/logAsyncWriter.hpp
+++ b/src/hotspot/share/logging/logAsyncWriter.hpp
@@ -162,17 +162,13 @@ class AsyncLogWriter : public NonJavaThread {
   static AsyncLogWriter* _instance;
   Semaphore _flush_sem;
   // Can't use a Monitor here as we need a low-level API that can be used without Thread::current().
-<<<<<<< e16e79c9aa2 (Merge with jdk-25+11)
-  PlatformMonitor _lock;
-  // for asynchronous thread run()
-  PlatformMonitor _block_async;
-=======
   // Producers take both locks in the order producer lock and then consumer lock.
   // The consumer protects the buffers and performs all communication between producer and consumer via wait/notify.
   // This allows a producer to await progress from the consumer thread (by only releasing the producer lock)), whilst preventing all other producers from progressing.
   PlatformMonitor _producer_lock;
   PlatformMonitor _consumer_lock;
->>>>>>> 78c18cfbcee (8349399: GHA: Add static-jdk build on linux-x64)
+  // for asynchronous thread run()
+  PlatformMonitor _block_async;
   bool _data_available;
   // _initialized is set to true if the constructor succeeds
   volatile bool _initialized;
diff --git a/src/hotspot/share/logging/logConfiguration.cpp b/src/hotspot/share/logging/logConfiguration.cpp
remerge CONFLICT (content): Merge conflict in src/hotspot/share/logging/logConfiguration.cpp
index a217029aad3..2843ed7ac0a 100644
--- a/src/hotspot/share/logging/logConfiguration.cpp
+++ b/src/hotspot/share/logging/logConfiguration.cpp
@@ -724,9 +724,6 @@ void LogConfiguration::notify_update_listeners() {
   }
 }
 
-<<<<<<< e16e79c9aa2 (Merge with jdk-25+11)
-bool LogConfiguration::_async_mode = false;
-
 bool LogConfiguration::is_fd_used(int fd) {
   assert(fd != -1, "fd must be valid");
   for (size_t i = 0; i < _n_outputs; i++) {
@@ -747,7 +744,8 @@ void LogConfiguration::reopen() {
   for (size_t i = 0; i < _n_outputs; i++) {
     _outputs[i]->reopen();
   }
-=======
+}
+
 LogConfiguration::AsyncMode LogConfiguration::_async_mode = AsyncMode::Off;
 
 bool LogConfiguration::parse_async_argument(const char* async_tail) {
@@ -764,5 +762,4 @@ bool LogConfiguration::parse_async_argument(const char* async_tail) {
     ret = false;
   }
   return ret;
->>>>>>> 78c18cfbcee (8349399: GHA: Add static-jdk build on linux-x64)
 }


</details>

Resolved conflicts after [JDK-8280682](https://bugs.openjdk.org/browse/JDK-8280682) and [JDK-8323807](https://bugs.openjdk.org/browse/JDK-8323807)

<details>

<summary>jdk-25+13</summary>


commit 17e0c040f48f9aaad95f41e53936f2b1276bbee0
Merge: 5d7098526ef 11a37c829c1
Author: Dmitry Cherepanov <dcherepanov at azul.com>
Date:   Tue Jun 3 00:51:26 2025 +0400

    Merge with jdk-25+13

diff --git a/src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java b/src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java
remerge CONFLICT (content): Merge conflict in src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java
index 2fafade2835..1ffb125ce7a 100644
--- a/src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java
+++ b/src/java.base/share/classes/jdk/internal/jimage/BasicImageReader.java
@@ -85,11 +85,7 @@ public Boolean run() {
     private final Decompressor decompressor;
     private Object cracResource;
 
-<<<<<<< 5d7098526ef (Merge with jdk-25+12)
-    @SuppressWarnings("this-escape")
-=======
-    @SuppressWarnings({ "removal", "this-escape", "suppression" })
->>>>>>> 11a37c829c1 (8351165: Remove unused includes from vmStructs)
+    @SuppressWarnings({ "this-escape", "suppression" })
     protected BasicImageReader(Path path, ByteOrder byteOrder)
             throws IOException {
         this.imagePath = Objects.requireNonNull(path);


</details>

Resolved conflict after [JDK-8343478](https://bugs.openjdk.org/browse/JDK-8343478)

<details>

<summary>jdk-25+14</summary>


commit dfd414f20be9f7b244f8d3050c648aacab7057f5 (HEAD -> merge-jdk, dmitry-crac/merge-jdk)
Merge: 17e0c040f48 a347ecdedc0
Author: Dmitry Cherepanov <dcherepanov at azul.com>
Date:   Tue Jun 3 01:26:54 2025 +0400

    Merge with jdk-25+14

diff --git a/src/java.base/unix/classes/sun/nio/ch/DatagramDispatcher.java b/src/java.base/unix/classes/sun/nio/ch/DatagramDispatcher.java
remerge CONFLICT (content): Merge conflict in src/java.base/unix/classes/sun/nio/ch/DatagramDispatcher.java
index 76fde4077cf..8f1692f0e4d 100644
--- a/src/java.base/unix/classes/sun/nio/ch/DatagramDispatcher.java
+++ b/src/java.base/unix/classes/sun/nio/ch/DatagramDispatcher.java
@@ -59,18 +59,7 @@ long writev(FileDescriptor fd, long address, int len) throws IOException {
         return writev0(fd, address, len);
     }
 
-<<<<<<< 17e0c040f48 (Merge with jdk-25+13)
-    void close(FileDescriptor fd) throws IOException {
-        closeAndMark(fd);
-    }
-
-    void preClose(FileDescriptor fd) throws IOException {
-        preClose0(fd);
-    }
-
-=======
     @Override
->>>>>>> a347ecdedc0 (8350905: Shenandoah: Releasing a WeakHandle's referent may extend its lifetime)
     void dup(FileDescriptor fd1, FileDescriptor fd2) throws IOException {
         dup0(fd1, fd2);
     }
diff --git a/src/java.base/unix/classes/sun/nio/ch/SocketDispatcher.java b/src/java.base/unix/classes/sun/nio/ch/SocketDispatcher.java
remerge CONFLICT (content): Merge conflict in src/java.base/unix/classes/sun/nio/ch/SocketDispatcher.java
index 2329ccfd66d..ebc4b2e8fbe 100644
--- a/src/java.base/unix/classes/sun/nio/ch/SocketDispatcher.java
+++ b/src/java.base/unix/classes/sun/nio/ch/SocketDispatcher.java
@@ -70,17 +70,6 @@ long writev(FileDescriptor fd, long address, int len) throws IOException {
         return writev0(fd, address, len);
     }
 
-<<<<<<< 17e0c040f48 (Merge with jdk-25+13)
-    void close(FileDescriptor fd) throws IOException {
-        closeAndMark(fd);
-    }
-
-    void preClose(FileDescriptor fd) throws IOException {
-        preClose0(fd);
-    }
-
-=======
->>>>>>> a347ecdedc0 (8350905: Shenandoah: Releasing a WeakHandle's referent may extend its lifetime)
     // -- Native methods --
 
     private static native int read0(FileDescriptor fd, long address, int len)
diff --git a/src/java.base/unix/classes/sun/nio/ch/UnixDispatcher.java b/src/java.base/unix/classes/sun/nio/ch/UnixDispatcher.java
remerge CONFLICT (content): Merge conflict in src/java.base/unix/classes/sun/nio/ch/UnixDispatcher.java
index 934f57bea9e..0af939d24bc 100644
--- a/src/java.base/unix/classes/sun/nio/ch/UnixDispatcher.java
+++ b/src/java.base/unix/classes/sun/nio/ch/UnixDispatcher.java
@@ -37,7 +37,6 @@
 
 abstract class UnixDispatcher extends NativeDispatcher {
 
-<<<<<<< 17e0c040f48 (Merge with jdk-25+13)
     static class ResourceProxy implements JDKResource {
         @Override
         public void beforeCheckpoint(Context<? extends Resource> context) throws Exception {
@@ -58,14 +57,11 @@ public void afterRestore(Context<? extends Resource> context)
     static ResourceProxy resourceProxy = new ResourceProxy();
 
 
-=======
     @Override
->>>>>>> a347ecdedc0 (8350905: Shenandoah: Releasing a WeakHandle's referent may extend its lifetime)
     void close(FileDescriptor fd) throws IOException {
-        close0(fd);
+	closeAndMark(fd);
     }
 
-<<<<<<< 17e0c040f48 (Merge with jdk-25+13)
     void preClose(FileDescriptor fd) throws IOException {
         boolean doPreclose = true;
         synchronized (closeLock) {
@@ -120,7 +116,6 @@ static void closeAndMark(FileDescriptor fd) throws IOException {
         fdAccess.close(fd);
     }
 
-=======
     @Override
     void implPreClose(FileDescriptor fd, long reader, long writer) throws IOException {
         preClose0(fd);
@@ -130,7 +125,6 @@ void implPreClose(FileDescriptor fd, long reader, long writer) throws IOExceptio
             NativeThread.signal(writer);
     }
 
->>>>>>> a347ecdedc0 (8350905: Shenandoah: Releasing a WeakHandle's referent may extend its lifetime)
     private static native void close0(FileDescriptor fd) throws IOException;
 
     private static native void preClose0(FileDescriptor fd) throws IOException;


</details>

Resolved conflicts after [JDK-8351458](https://bugs.openjdk.org/browse/JDK-8351458)

-------------

Commit messages:
 - fix whitespace error
 - Merge with jdk-25+14
 - 8350905: Shenandoah: Releasing a WeakHandle's referent may extend its lifetime
 - 8351699: Problem list com/sun/jdi/JdbStopInNotificationThreadTest.java with ZGC
 - 8351444: Shenandoah: Class Unloading may encounter recycled oops
 - 8351640: Print reason for making method not entrant
 - 8351142: Add JFR monitor deflation and statistics events
 - 8351881: Tidy complains about missing "alt" attribute
 - 8350982: -server|-client causes fatal exception on static JDK
 - 8303770: Remove Baltimore root certificate expiring in May 2025
 - ... and 329 more: https://git.openjdk.org/crac/compare/19d203ae...00d3d867

The webrevs contain the adjustments done while merging with regards to each parent branch:
 - crac: https://webrevs.openjdk.org/?repo=crac&pr=236&range=00.0
 - jdk:jdk-25+14: https://webrevs.openjdk.org/?repo=crac&pr=236&range=00.1

Changes: https://git.openjdk.org/crac/pull/236/files
  Stats: 91105 lines in 2011 files changed: 44366 ins; 31941 del; 14798 mod
  Patch: https://git.openjdk.org/crac/pull/236.diff
  Fetch: git fetch https://git.openjdk.org/crac.git pull/236/head:pull/236

PR: https://git.openjdk.org/crac/pull/236


More information about the crac-dev mailing list