[crac] RFR: Merge jdk:jdk-27+5 [v2]
Timofei Pushkin
tpushkin at openjdk.org
Thu Jan 29 09:00:10 UTC 2026
> 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.
Timofei Pushkin has updated the pull request incrementally with one additional commit since the last revision:
Fixups
-------------
Changes:
- all: https://git.openjdk.org/crac/pull/288/files
- new: https://git.openjdk.org/crac/pull/288/files/f493f95e..de768936
Webrevs:
- full: Webrev is not available because diff is too large
- incr: https://webrevs.openjdk.org/?repo=crac&pr=288&range=00-01
Stats: 4 lines in 2 files changed: 2 ins; 0 del; 2 mod
Patch: https://git.openjdk.org/crac/pull/288.diff
Fetch: git fetch https://git.openjdk.org/crac.git pull/288/head:pull/288
PR: https://git.openjdk.org/crac/pull/288
More information about the crac-dev
mailing list