RELEASE NOTES FOR: 22.0.2 ==================================================================================================== Notes generated: Tue Dec 03 20:35:56 CET 2024 Hint: Prefix bug IDs with https://bugs.openjdk.org/browse/ to reach the relevant JIRA entry. JAVA ENHANCEMENT PROPOSALS (JEP): None. RELEASE NOTES: tools/jpackage: JDK-8295111: `jpackage` Apps May Fail to Build on Debian Linux Distros Due to Missing Shared Libraries There is an issue on Debian Linux distros where `jpackage` could not always build an accurate list of required packages from shared libraries with symbolic links in their paths, causing installations to fail due to missing shared libraries. JDK-8295111: `jpackage` May Produce an Inaccurate List of Required Packages on Debian Linux Distros Fixed an issue on Debian Linux distros where `jpackage` could not always build an accurate list of required packages from shared libraries with symbolic links in their paths, causing installations to fail due to missing shared libraries. security-libs/javax.security: JDK-8328638: Fallback Option For POST-only OCSP Requests JDK 17 introduced a performance improvement that made OCSP clients unconditionally use GET requests for small requests, while doing POST requests for everything else. This is explicitly allowed and recommended by RFC 5019 and RFC 6960. However, we have seen OCSP responders that, despite RFC requirements, are not working well with GET requests. This release introduces a new JDK system property to allow clients to fallback to POST-only behavior. This unblocks interactions with those OCSP responders through the use of `-Dcom.sun.security.ocsp.useget={false,true}`. This amends the original change that introduced GET OCSP requests (JDK-8179503). The default behavior is not changed; the option defaults to `true`. Set the option to `false` to disable GET OCSP requests. Any value other than `false` (case-insensitive) defaults to `true`. This option is non-standard, and might go away once problematic OCSP responders get upgraded. infrastructure/build: JDK-8326891: Native Executables and Libraries on Linux Use `RPATH` Instead of `RUNPATH` Native executables and libraries on Linux have switched to using `RPATH` instead of `RUNPATH` in this release. JDK native executables and libraries use embedded runtime search paths to locate other internal JDK native libraries. On Linux these can be defined as either `RPATH` or `RUNPATH`. The main difference is that the dynamic linker considers `RPATH` before the `LD_LIBRARY_PATH` environment variable, while `RUNPATH` is only considered after `LD_LIBRARY_PATH`. By making the change to using `RPATH`, it is no longer possible to replace JDK internal native libraries using `LD_LIBRARY_PATH`. security-libs/java.security: JDK-8316138: Added GlobalSign R46 and E46 Root CA Certificates The following root certificates have been added to the cacerts truststore: ``` + GlobalSign + globalsignr46 DN: CN=GlobalSign Root R46, O=GlobalSign nv-sa, C=BE + GlobalSign + globalsigne46 DN: CN=GlobalSign Root E46, O=GlobalSign nv-sa, C=BE ``` hotspot/gc: JDK-8328744: Parallel GC Throws OOM Before Heap Is Fully Expanded An existing bug may have prevented the full usage of the Java heap allotted with the command line flag `-Xmx`. That bug has been fixed with JDK-8328744. As a side effect of this fix, installations may experience an increased heap usage when using Parallel GC. Customers should, if necessary, adjust the maximum heap size. JDK-8319548: Name Change for Filler Array Objects from `jdk.vm.internal.FillerArray` to `[Ljdk/internal/vm/FillerElement;` One HotSpot virtual machine internal class to indicate an area of dead (unreachable) memory has been renamed to conform to the Java class naming standard to avoid confusing external applications parsing virtual machine class histograms provided by `jmap -histo`. There are applications that parse the output of `jmap -histo` which fail when encountering the class `jdk.vm.internal.FillerArray`. In particular, the issue is that this type of filler object represents a flexibly sized range of unreachable memory but is named as if it were a fixed size non-array object. Then, for example, calculating the instance size of these objects from the `jmap -histo` output can result in non-integral instance sizes, confusing applications. This problem has been fixed by changing the name of this class to the array-like name `[Ljdk/internal/vm/FillerElement;`. ALL FIXED ISSUES, BY COMPONENT AND PRIORITY: client-libs: (P4) JDK-8324243: Compilation failures in java.desktop module with gcc 14 client-libs/2d: (P4) JDK-8331746: Create a test to verify that the cmm id is not ignored client-libs/java.awt: (P3) JDK-8185862: AWT Assertion Failure in ::GetDIBits(hBMDC, hBM, 0, 1, 0, gpBitmapInfo, 0) 'awt_Win32GraphicsDevice.cpp', at line 185 client-libs/javax.accessibility: (P4) JDK-8326140: src/jdk.accessibility/windows/native/libjavaaccessbridge/AccessBridgeJavaEntryPoints.cpp ReleaseStringChars might be missing in early returns client-libs/javax.swing: (P3) JDK-8323801: tag doesn't strikethrough the text (P3) JDK-8187759: Background not refreshed when painting over a transparent JFrame (P3) JDK-8328953: JEditorPane.read throws ChangedCharSetException (P3) JDK-8320692: Null icon returned for .exe without custom icon (P3) JDK-8325179: Race in BasicDirectoryModel.validateFileCache (P4) JDK-8323670: A few client tests intermittently throw ConcurrentModificationException (P4) JDK-8327137: Add test for ConcurrentModificationException in BasicDirectoryModel (P4) JDK-8238169: BasicDirectoryModel getDirectories and DoChangeContents.run can deadlock (P4) JDK-8310072: JComboBox/DisabledComboBoxFontTestAuto: Enabled and disabled ComboBox does not match in these LAFs: GTK+ (P4) JDK-8305072: Win32ShellFolder2.compareTo is inconsistent core-libs: (P4) JDK-8326351: Update the Zlib version in open/src/java.base/share/legal/zlib.md to 1.3.1 core-libs/java.io: (P4) JDK-8330748: ByteArrayOutputStream.writeTo(OutputStream) pins carrier core-libs/java.lang: (P4) JDK-8328524: [x86] StringRepeat.java failure on linux-x86: Could not reserve enough space for 2097152KB object heap (P4) JDK-8325621: Improve jspawnhelper version checks (P4) JDK-8325567: jspawnhelper without args fails with segfault (P4) JDK-8323782: Race: Thread::interrupt vs. AbstractInterruptibleChannel.begin (P4) JDK-8325730: StringBuilder.toString allocation for the empty String (P4) JDK-8320707: Virtual thread test updates core-libs/java.lang.foreign: (P4) JDK-8323552: AbstractMemorySegmentImpl#mismatch returns -1 when comparing distinct areas of the same instance of MemorySegment core-libs/java.net: (P4) JDK-8330814: Cleanups for KeepAliveCache tests (P4) JDK-8330523: Reduce runtime and improve efficiency of KeepAliveTest (P4) JDK-8330815: Use pattern matching for instanceof in KeepAliveCache core-libs/java.nio: (P4) JDK-8325028: (ch) Pipe channels should lazily set socket to non-blocking mode on first use by virtual thread (P4) JDK-8325743: test/jdk/java/nio/channels/unixdomain/SocketOptions.java enhance user name output in error case core-libs/java.util: (P3) JDK-8325255: jdk.internal.util.ReferencedKeySet::add using wrong test core-libs/java.util.concurrent: (P3) JDK-8309218: java/util/concurrent/locks/Lock/OOMEInAQS.java still times out with ZGC, Generational ZGC, and SerialGC (P3) JDK-8328366: Thread.setContextClassloader from thread in FJP commonPool task no longer works after JDK-8327501 (P4) JDK-8327501: Common ForkJoinPool prevents class unloading in some cases core-libs/java.util.jar: (P4) JDK-8330615: avoid signed integer overflows in zip_util.c readCen / hashN (P4) JDK-8332490: JMH org.openjdk.bench.java.util.zip.InflaterInputStreams.inflaterInputStreamRead OOM (P4) JDK-8324632: Update Zlib Data Compression Library to Version 1.3.1 (P4) JDK-8322078: ZipSourceCache.testKeySourceMapping() test fails with The process cannot access the file because it is being used by another process core-libs/java.util.logging: (P4) JDK-8329013: StackOverflowError when starting Apache Tomcat with signed jar core-libs/java.util.stream: (P4) JDK-8328316: Finisher cannot emit if stream is sequential and integrator returned false core-libs/java.util:collections: (P4) JDK-8328066: WhiteBoxResizeTest failure on linux-x86: Could not reserve enough space for 2097152KB object heap core-libs/java.util:i18n: (P4) JDK-8327631: Update IANA Language Subtag Registry to Version 2024-03-07 core-libs/javax.naming: (P3) JDK-8325579: Inconsistent behavior in com.sun.jndi.ldap.Connection::createSocket core-svc/tools: (P4) JDK-8327468: Do not restart close if errno is EINTR [macOS/linux] docs: (P4) JDK-8327174: Create documentation for system property sun.java2d.metal docs/guides: (P3) JDK-8325562: Test jextract examples in the Core Libraries guide for JDK 22 (P4) JDK-8331331: :tier1 target explanation in doc/testing.md is incorrect (P4) JDK-8331872: jsse.enableFFDHE system property typo in JSSE Reference Guide hotspot/compiler: (P2) JDK-8328702: C2: Crash during parsing because sub type check is not folded (P2) JDK-8322726: C2: Unloaded signature class kills argument value (P3) JDK-8326201: [S390] Need to bailout cleanly if creation of stubs fails when code cache is out of space (P3) JDK-8328822: C2: "negative trip count?" assert failure in profile predicate code (P3) JDK-8331885: C2: meet between unloaded and speculative types is not symmetric (P3) JDK-8324121: SIGFPE in PhaseIdealLoop::extract_long_range_checks (P4) JDK-8331894: [jdk22] compiler/print/CompileCommandMemLimit.java fails after backporting JDK-8325095 (P4) JDK-8310513: [s390x] Intrinsify recursive ObjectMonitor locking (P4) JDK-8324874: AArch64: crypto pmull based CRC32/CRC32C intrinsics clobber V8-V15 registers (P4) JDK-8323519: Add applications/ctw/modules to Hotspot tiered testing (P4) JDK-8325095: C2: bailout message broken: ResourceArea allocated string used after free (P4) JDK-8329163: C2: possible overflow in PhaseIdealLoop::extract_long_range_checks() (P4) JDK-8325613: CTW: Stale method cleanup requires GC after Sweeper removal (P4) JDK-8325432: enhance assert message "relocation addr must be in this section" (P4) JDK-8328165: improve assert(idx < _maxlrg) failed: oob (P4) JDK-8331344: No compiler replay file with CompilerCommand MemLimit (P4) JDK-8326974: ODR violation in macroAssembler_aarch64.cpp (P4) JDK-8329823: RISC-V: Need to sync CPU features with related JVM flags (P4) JDK-8330094: RISC-V: Save and restore FRM in the call stub hotspot/gc: (P1) JDK-8329528: G1 does not update TAMS correctly when dropping retained regions during Concurrent Start pause (P2) JDK-8322484: 22-b26 Regression in J2dBench-bimg_misc-G1 (and more) on Windows-x64 and macOS-x64 (P2) JDK-8330275: Crash in XMark::follow_array (P2) JDK-8328166: Epsilon: 'EpsilonHeap::allocate_work' misuses the parameter 'size' as size in bytes (P2) JDK-8328168: Epsilon: Premature OOM when allocating object larger than uncommitted heap size (P2) JDK-8328744: Parallel: Parallel GC throws OOM before heap is fully expanded (P3) JDK-8329223: Parallel: Parallel GC resizes heap even if -Xms = -Xmx (P3) JDK-8325587: Shenandoah: ShenandoahLock should allow blocking in VM (P3) JDK-8316328: Test jdk/jfr/event/oldobject/TestSanityDefault.java times out for some heap sizes (P3) JDK-8329109: Threads::print_on() tries to print CPU time for terminated GC threads (P4) JDK-8329840: Fix ZPhysicalMemorySegment::_end type (P4) JDK-8329570: G1: Excessive is_obj_dead_cond calls in verification (P4) JDK-8329134: Reconsider TLAB zapping (P4) JDK-8328075: Shenandoah: Avoid forwarding when objects don't move in full-GC (P4) JDK-8322503: Shenandoah: Clarify gc state usage (P4) JDK-8319548: Unexpected internal name for Filler array klass causes error in VisualVM (P4) JDK-8330576: ZYoungCompactionLimit should have range check (P5) JDK-8333093: Incorrect comment in zAddress_aarch64.cpp hotspot/jfr: (P3) JDK-8326446: The User and System of jdk.CPULoad on Apple M1 are inaccurate (P3) JDK-8326106: Write and clear stack trace table outside of safepoint (P4) JDK-8327990: [macosx-aarch64] Various tests fail with -XX:+AssertWXAtThreadSync (P4) JDK-8326521: JFR: CompilerPhase event test fails on windows 32 bit (P4) JDK-8326529: JFR: Test for CompilerCompile events fails due to time out hotspot/other: (P4) JDK-8330011: [s390x] update block-comments to make code consistent hotspot/runtime: (P2) JDK-8329545: [s390x] Fix garbage value being passed in Argument Register (P3) JDK-8329850: [AIX] Allow loading of different members of same shared library archive (P3) JDK-8329656: assertion failed in MAP_ARCHIVE_MMAP_FAILURE path: Invalid immediate -5 0 (P3) JDK-8332253: Linux arm32 build fails after 8292591 (P3) JDK-8328812: Update and move siphash license (P3) JDK-8329958: Windows x86 build fails: downcallLinker.cpp(36) redefinition (P4) JDK-8328776: [AIX] remove checked_vmgetinfo, use vmgetinfo directly (P4) JDK-8326496: [test] checkHsErrFileContent support printing hserr in error case (P4) JDK-8328709: AIX os::get_summary_cpu_info support Power 10 (P4) JDK-8320005: Allow loading of shared objects with .a extension on AIX (P4) JDK-8331298: avoid alignment checks in UBSAN enabled build (P4) JDK-8329961: Buffer overflow in os::Linux::kernel_version (P4) JDK-8324933: ConcurrentHashTable::statistics_calculate synchronization is expensive (P4) JDK-8329605: hs errfile generic events - move memory protections and nmethod flushes to separate sections (P4) JDK-8329663: hs_err file event log entry for thread adding/removing should print current thread (P4) JDK-8330464: hserr generic events - add entry for the before_exit calls (P4) JDK-8330027: Identity hashes of archived objects must be based on a reproducible random seed (P4) JDK-8330524: Linux ppc64le compile warning with clang in os_linux_ppc.cpp (P4) JDK-8331714: Make OopMapCache installation lock-free (P4) JDK-8331942: On Linux aarch64, CDS archives should be using 64K alignment by default (P4) JDK-8327059: os::Linux::print_proc_sys_info add swappiness information (P4) JDK-8323685: PrintSystemDictionaryAtExit has mutex rank assert (P4) JDK-8328604: remove on_aix() function (P4) JDK-8328997: Remove unnecessary template parameter lists in GrowableArray (P4) JDK-8326936: RISC-V: Shenandoah GC crashes due to incorrect atomic memory operations (P4) JDK-8330242: RISC-V: Simplify and remove CORRECT_COMPILER_ATOMIC_SUPPORT in atomic_linux_riscv.hpp (P4) JDK-8321075: RISC-V: UseSystemMemoryBarrier lacking proper OS support (P4) JDK-8322943: runtime/CompressedOops/CompressedClassPointers.java fails on AIX (P4) JDK-8325862: set -XX:+ErrorFileToStderr when executing java in containers for some container related jtreg tests (P4) JDK-8331167: UBSan enabled build fails in adlc on macOS (P4) JDK-8328589: unify os::breakpoint among posix platforms (P4) JDK-8331031: unify os::dont_yield and os::naked_yield across Posix platforms (P4) JDK-8322962: Upcall stub might go undetected when freezing frames (P5) JDK-8330156: RISC-V: Range check auipc + signed 12 imm instruction hotspot/test: (P4) JDK-8326006: Allow TEST_VM_FLAGLESS to set flagless mode (P4) JDK-8323994: gtest runner repeats test name for every single gtest assertion (P4) JDK-8327030: Kitchensink: Remove NoSystemExitSecurityManager (P4) JDK-8325763: Revert properties: vm.opt.x.* infrastructure: (P4) JDK-8327467: Bump version numbers for 22.0.2 infrastructure/build: (P1) JDK-8328948: GHA: Restoring sysroot from cache skips the build after JDK-8326960 (P4) JDK-8331164: createJMHBundle.sh download jars fail when url needed to be redirected (P4) JDK-8331352: error: template-id not allowed for constructor/destructor in C++20 (P4) JDK-8328705: GHA: Cross-compilation jobs do not require build JDK (P4) JDK-8326960: GHA: RISC-V sysroot cannot be debootstrapped due to ongoing Debian t64 transition (P4) JDK-8326891: Prefer RPATH over RUNPATH for $ORIGIN rpaths in internal JDK binaries (P4) JDK-8324834: Use _LARGE_FILES on AIX security-libs/java.security: (P3) JDK-8316138: Add GlobalSign 2 TLS root certificates (P3) JDK-8328825: Google CAInterop test failures (P3) JDK-8326643: JDK server does not send a dummy change_cipher_spec record after HelloRetryRequest message (P4) JDK-8324646: Avoid Class.forName in SecureRandom constructor (P4) JDK-8324648: Avoid NoSuchMethodError when instantiating NativePRNG security-libs/javax.crypto:pkcs11: (P3) JDK-8261433: Better pkcs11 performance for libpkcs11:C_EncryptInit/libpkcs11:C_DecryptInit security-libs/javax.net.ssl: (P4) JDK-8312383: Log X509ExtendedKeyManager implementation class name in TLS/SSL connection security-libs/javax.security: (P4) JDK-8329213: Better validation for com.sun.security.ocsp.useget option (P4) JDK-8328638: Fallback option for POST-only OCSP requests specification/language: (P4) JDK-8327598: Update the index page for specs tools: (P4) JDK-8328703: Illegal accesses in Java_jdk_internal_org_jline_terminal_impl_jna_linux_CLibraryImpl_ioctl0 tools/jpackage: (P2) JDK-8295111: dpkg appears to have problems resolving symbolically linked native libraries tools/launcher: (P4) JDK-8329862: libjli GetApplicationHome cleanups and enhance jli tracing