[crac] RFR: Merge jdk:jdk-27+5

Timofei Pushkin tpushkin at openjdk.org
Wed Jan 28 08:27:53 UTC 2026


On Wed, 28 Jan 2026 08:18:08 GMT, Timofei Pushkin <tpushkin at openjdk.org> wrote:

> Merge of mainline up to tag `jdk-27+5`.
> 
> Output of `git show --remerge-diff`: https://gist.github.com/TimPushkin/08b5f317377b4f3be0d13a83600af362
> 
> Major conflicts/changes:
> - Removed a bunch of expired VM options
> - Removed uses of `IgnoreCPUFeatures` as it becomes obsoleted with 27
> - Sorted includes with `test/hotspot/jtreg/sources/SortIncludes.java` because there's now a test checking the include order in CI
> - Replaced `snprintf` with `os::snprintf` because the use of the former now fails the build (it is marked deprecated)
> - Moved code that cleans heap before checkpoint because of changes in GCs: [JDK-8368740](https://bugs.openjdk.org/browse/JDK-8368740) (Serial), [JDK-8338977](https://bugs.openjdk.org/browse/JDK-8338977) (Parallel), [JDK-8238687](https://bugs.openjdk.org/browse/JDK-8238687) (G1)
> - Handled the new `HYBRID` CPU feature as not GLIBC-tunable — not sure if it is indeed not tunable (don't know how to check reliably)
> - Rewrote CPU features to string conversions to use `stringStream` because of [JDK-8364128](https://bugs.openjdk.org/browse/JDK-8364128)
> - Deferred initialization of `JDKFileResource.CLASSPATH_ENTRIES` until checkpoint: having it static changed the order of static initializations during VM startup from what is in the mainline in a way that class loading from CDS-archived JDK modules broke. When starting from a CDS archive, `ArchivedClassLoaders` and `BuiltinClassLoader` have a circular static-init dependency, and in CRaC the order was "wrong". I'd say that this is a CDS bug but it seems easier for us to apply this workaround, plus it improves performance when C/R is not used.
> - Separated Docker code from `CracBuilder` into `CracContainerBuilder`: because of https://github.com/openjdk/jdk/pull/28557#issuecomment-3597274354 all tests that use `DockerTestUtils` now require `@modules java.base/jdk.internal.platform`, so all CRaC tests that use `CracContainerBuilder` now require it
> 
> Currently two tests that use images from https://github.com/CRaC/container-images fail in CI because the glibc-based image needs to be updated (CI now uses glibc 2.38) — I am working on that in that repo, no related changes in this repo are expected.

@jankratochvil I can't assign you as a reviewer, but please review the changes related to CPU features, the handling of the new `HYBRID` feature in particular

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

PR Comment: https://git.openjdk.org/crac/pull/288#issuecomment-3809714649


More information about the crac-dev mailing list