RELEASE NOTES FOR: 17.0.12 ==================================================================================================== Notes generated: Wed May 01 06:53:13 CEST 2024 Hint: Prefix bug IDs with https://bugs.openjdk.org/browse/ to reach the relevant JIRA entry. JAVA ENHANCEMENT PROPOSALS (JEP): None. RELEASE NOTES: security-libs/javax.security: JDK-8328638: Fallback Option For POST-only OCSP Requests JDK 17 introduced the performance improvement that made OCSP client 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 fallback to POST-only behavior to unblock interaction with those OCSP responders: `-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. security-libs/javax.net.ssl: JDK-8256660: Disabled DTLS 1.0 DTLS 1.0 has been disabled by default, by adding "DTLSv1.0" to the `jdk.tls.disabledAlgorithms` security property in the `java.security` configuration file. DTLS 1.0 has weakened over time and lacks support for stronger cipher suites. Any attempts to use DTLSv1.0 will fail with an `SSLHandshakeException`. Users can, at their own risk, re-enable the version by removing "DTLSv1.0" from the `jdk.tls.disabledAlgorithms` security property. 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 inject external replacements for JDK internal native libraries using `LD_LIBRARY_PATH`. hotspot/runtime: JDK-8325496: Make `TrimNativeHeapInterval` a Product Switch `TrimNativeHeapInterval` has been made an official product switch. It allows the JVM to trim the native heap at periodic intervals. This option is only available on Linux with glibc. security-libs/java.security: JDK-8281658: New Security Category for `-XshowSettings` Launcher Option The `-XshowSettings` launcher has a new `security` category. Settings from security properties, security providers and TLS related settings are displayed with this option. A security sub-category can be passed as an argument to the security category option. See the output from `java -X`: ``` -XshowSettings:security show all security settings and continue -XshowSettings:security:*sub-category* show settings for the specified security sub-category and continue. Possible *sub-category* arguments for this option include: all: show all security settings and continue properties: show security properties and continue providers: show static security provider settings and continue tls: show TLS related security settings and continue ``` Third party security provider details will be reported if they are included in the application class path or module path and such providers are configured in the `java.security` file. hotspot/gc: JDK-8310031: Parallel: Precise Parallel Scanning of Large Object Arrays for Young Collection Roots During a young collection, ParallelGC partitions the old generation into 64kB stripes when scanning it for references into the young generation. These stripes are assigned to worker threads that do the scanning in parallel as work units. Before this change, Parallel GC always scanned these stripes completely even if only a small part had been known to contain interesting references. Additionally, every worker thread processed the objects that start in that stripe by itself, including parts of objects that extend into other stripes. This behavior limited parallelism when processing large objects. A single large object, potentially containing thousands of references, had been scanned by a single thread only and in full. This would cause bad scaling due to memory sharing and cache misses in the subsequent long, work stealing phase. With this change, Parallel GC workers limit work to their stripe and only process interesting parts of large object arrays. This reduces the work done by a single thread for a stripe, improves parallelism, and reduces the amount of work stealing. Parallel GC pauses are now on par with G1 in presence of large object arrays, reducing pause times by 4-5 times in some cases. ALL FIXED ISSUES, BY COMPONENT AND PRIORITY: client-libs: (P4) JDK-8320303: Allow PassFailJFrame to accept single window creator (P4) JDK-8294156: Allow PassFailJFrame.Builder to create test UI (P4) JDK-8315071: Modify TrayIconScalingTest.java, PrintLatinCJKTest.java to use new PassFailJFrame's builder pattern usage (P4) JDK-8316017: Refactor timeout handler in PassFailJFrame client-libs/2d: (P3) JDK-8326661: sun/java2d/cmm/ColorConvertOp/ColConvTest.java assumes profiles were generated by LCMS (P3) JDK-8321489: Update LCMS to 2.16 (P4) JDK-8328194: Add a test to check default rendering engine (P4) JDK-8323210: Update the usage of cmsFLAGS_COPY_ALPHA client-libs/java.awt: (P2) JDK-8318854: [macos14] Running any AWT app prints Secure coding warning (P3) JDK-8317287: [macos14] InterJVMGetDropSuccessTest.java: Child VM: abnormal termination (P3) JDK-8185862: AWT Assertion Failure in ::GetDIBits(hBMDC, hBM, 0, 1, 0, gpBitmapInfo, 0) 'awt_Win32GraphicsDevice.cpp', at line 185 (P4) JDK-8320113: [macos14] : ShapeNotSetSometimes.java fails intermittently on macOS 14 (P4) JDK-8324238: [macOS] java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java fails with the shape has not been applied msg (P4) JDK-8266242: java/awt/GraphicsDevice/CheckDisplayModes.java failing on macOS 11 ARM (P4) JDK-8306634: Open source AWT Event related tests (P4) JDK-8306067: Open source AWT Graphics,GridBagLayout related tests (P4) JDK-8305874: Open source AWT Key, Text Event related tests (P4) JDK-8305943: Open source few AWT Focus related tests (P4) JDK-8315663: Open source misc awt tests (P4) JDK-8315726: Open source several AWT applet tests (P4) JDK-8305942: Open source several AWT Focus related tests (P4) JDK-8305645: System Tray icons get corrupted when Windows primary monitor changes (P4) JDK-8320342: Use PassFailJFrame for TruncatedPopupMenuTest.java 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-8322239: [macos] a11y : java.lang.NullPointerException is thrown when focus is moved on the JTabbedPane (P3) JDK-8187759: Background not refreshed when painting over a transparent JFrame (P3) JDK-8306838: GetGraphicsTest needs to be headful (P4) JDK-8318580: "javax/swing/MultiMonitor/MultimonVImage.java failing with Error. Can't find library: /open/test/jdk/java/awt/regtesthelpers" after JDK-8316053 (P4) JDK-8015739: Background of JInternalFrame is located out of JInternalFrame (P4) JDK-8316053: Open some swing tests 3 (P4) JDK-8315609: Open source few more swing text/html tests (P4) JDK-8306714: Open source few Swing event and AbstractAction tests (P4) JDK-8315677: Open source few swing JFileChooser and other tests (P4) JDK-8315741: Open source few swing JFormattedTextField and JPopupMenu tests (P4) JDK-8315889: Open source several Swing HTMLDocument related tests (P4) JDK-8315834: Open source several Swing JSpinner related tests (P4) JDK-8315824: Open source several Swing Text/HTML related tests (P4) JDK-8315898: Open source swing JMenu tests (P4) JDK-8316164: Opensource JMenuBar manual test (P4) JDK-8316154: Opensource JTextArea manual tests (P4) JDK-8316242: Opensource SwingGraphics manual test (P4) JDK-8328540: test javax/swing/JSplitPane/4885629/bug4885629.java fails on windows hidpi (P4) JDK-8297449: Update JInternalFrame Metal Border code (P5) JDK-8295026: Remove unused fields in StyleSheet core-libs: (P4) JDK-8309630: Clean up tests that reference deploy modules (P4) JDK-8272903: Missing license header in ArenaAllocator.java (P4) JDK-8326351: Update the Zlib version in open/src/java.base/share/legal/zlib.md to 1.3.1 core-libs/java.lang: (P3) JDK-8320570: NegativeArraySizeException decoding >1G UTF8 bytes with non-ascii characters (P4) JDK-8328524: [x86] StringRepeat.java failure on linux-x86: Could not reserve enough space for 2097152KB object heap (P4) JDK-8327998: Enable java/lang/ProcessBuilder/JspawnhelperProtocol.java on Mac core-libs/java.lang.foreign: (P4) JDK-8307411: Test java/foreign/channels/TestAsyncSocketChannels.java failed: IllegalStateException: Already closed core-libs/java.lang.invoke: (P4) JDK-8280377: MethodHandleProxies does not correctly invoke default methods with varags core-libs/java.lang:class_loading: (P4) JDK-8309763: Move tests in test/jdk/sun/misc/URLClassPath directory to test/jdk/jdk/internal/loader core-libs/java.math: (P4) JDK-8294137: Review running times of java.math tests core-libs/java.net: (P3) JDK-8306040: HttpResponseInputStream.available() returns 1 on empty stream (P3) JDK-8318599: HttpURLConnection cache issues leading to crashes in JGSS w/ native GSS introduced by 8303809 (P3) JDK-8296610: java/net/HttpURLConnection/SetAuthenticator/HTTPSetAuthenticatorTest.java failed with "BindException: Address already in use: connect" (P4) JDK-8297645: Drop the test/jdk/java/net/httpclient/reactivestreams-tck-tests/TckDriver.java test (P4) JDK-8163921: HttpURLConnection default Accept header is malformed according to HTTP/1.1 RFC (P4) JDK-8309527: Improve test proxy performance (P4) JDK-8303457: Introduce convenience test library APIs for creating test servers for tests in test/jdk/java/net/httpclient (P4) JDK-8327989: java/net/httpclient/ManyRequest.java should not use "localhost" in URIs (P4) JDK-8223696: java/net/httpclient/MaxStreams.java failed with didn't finish within the time-out (P4) JDK-8295944: Move the Http2TestServer and related classes into a package of its own (P4) JDK-8309409: Update HttpInputStreamTest and BodyProcessorInputStreamTest to use hg.openjdk.org (P4) JDK-8304927: Update java/net/httpclient/BasicAuthTest.java to check basic auth over HTTP/2 core-libs/java.nio: (P3) JDK-8297292: java/nio/channels/FileChannel/FileExtensionAndMap.java is too slow (P3) JDK-8263940: NPE when creating default file system when default file system provider is packaged as JAR file on class path (P4) JDK-8301183: (zipfs) jdk/jdk/nio/zipfs/TestLocOffsetFromZip64EF.java failing with ZipException:R0 on OL9 (P4) JDK-8303972: (zipfs) Make test/jdk/jdk/nio/zipfs/TestLocOffsetFromZip64EF.java independent of the zip command line (P4) JDK-8320943: Files/probeContentType/Basic.java fails on latest Windows 11 - content type mismatch core-libs/java.rmi: (P4) JDK-8298939: Refactor open/test/jdk/javax/rmi/ssl/SSLSocketParametersTest.sh to jtreg java test core-libs/java.util: (P3) JDK-8283349: Robustness improvements to java/util/prefs/AddNodeChangeListener.jar (P4) JDK-8313307: java/util/Formatter/Padding.java fails on some Locales core-libs/java.util.concurrent: (P3) JDK-8318809: java/util/concurrent/ConcurrentLinkedQueue/WhiteBox.java shows intermittent failures on linux ppc64le and aarch64 core-libs/java.util.jar: (P4) JDK-8315117: Update Zlib Data Compression Library to Version 1.3 (P4) JDK-8324632: Update Zlib Data Compression Library to Version 1.3.1 core-libs/java.util.logging: (P4) JDK-8329013: StackOverflowError when starting Apache Tomcat with signed jar 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-8310818: Refactor more Locale tests to use JUnit (P4) JDK-8302512: Update IANA Language Subtag Registry to Version 2023-02-14 (P4) JDK-8304761: Update IANA Language Subtag Registry to Version 2023-03-22 (P4) JDK-8306031: Update IANA Language Subtag Registry to Version 2023-04-13 (P4) JDK-8308021: Update IANA Language Subtag Registry to Version 2023-05-11 (P4) JDK-8313702: Update IANA Language Subtag Registry to Version 2023-08-02 (P4) JDK-8318322: Update IANA Language Subtag Registry to Version 2023-10-16 (P4) JDK-8327631: Update IANA Language Subtag Registry to Version 2024-03-07 core-libs/javax.script: (P4) JDK-8320712: Rewrite BadFactoryTest in pure Java core-svc/debugger: (P4) JDK-8213714: AttachingConnector/attach/attach001 failed due to "bind failed: Address already in use" (P4) JDK-8260540: serviceability/jdwp/AllModulesCommandTest.java failed with "Debuggee error: 'ERROR: transport error 202: bind failed: Address already in use'" core-svc/java.lang.management: (P3) JDK-8299858: [Metrics] Swap memory limit reported incorrectly when too large core-svc/javax.management: (P4) JDK-8302069: javax/management/remote/mandatory/notif/NotifReconnectDeadlockTest.java update hotspot/compiler: (P2) JDK-8319372: C2 compilation fails with "Bad immediate dominator info" (P3) JDK-8325326: [PPC64] Don't relocate in case of allocation failure (P3) JDK-8326101: [PPC64] Need to bailout cleanly if creation of stubs fails when code cache is out of space (P3) JDK-8276227: ciReplay: SIGSEGV if classfile for replay compilation is not present after JDK-8275868 (P3) JDK-8326638: Crash in PhaseIdealLoop::remix_address_expressions due to unexpected Region instead of Loop (P3) JDK-8324050: Issue store-store barrier after re-materializing objects during deoptimization (P4) JDK-8323519: Add applications/ctw/modules to Hotspot tiered testing (P4) JDK-8275868: ciReplay: Inlining fails with "unloaded signature classes" due to wrong protection domains (P4) JDK-8325137: com/sun/management/ThreadMXBean/ThreadCpuTimeArray.java can fail in Xcomp with out of expected range (P4) JDK-8322858: compiler/c2/aarch64/TestFarJump.java fails on AArch64 due to unexpected PrintAssembly output (P4) JDK-8325432: enhance assert message "relocation addr must be in this section" (P4) JDK-8328165: improve assert(idx < _maxlrg) failed: oob (P4) JDK-8327136: javax/management/remote/mandatory/notif/NotifReconnectDeadlockTest.java fails on libgraal (P4) JDK-8329823: RISC-V: Need to sync CPU features with related JVM flags (P4) JDK-8325372: Shenandoah: SIGSEGV crash in unnecessary_acquire due to LoadStore split through phi hotspot/gc: (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 (P3) JDK-8272651: G1 heap region info print order changed by JDK-8269914 (P4) JDK-8280030: [REDO] Parallel: More precise boundary in ObjectStartArray::object_starts_in_range (P4) JDK-8282094: [REDO] Parallel: Refactor PSCardTable::scavenge_contents_parallel (P4) JDK-8291753: Add JFR event for GC CPU Time (P4) JDK-8270018: Add scoped object for g1 young gc JFR notification (P4) JDK-8316608: Enable parallelism in vmTestbase/gc/vector tests (P4) JDK-8318727: Enable parallelism in vmTestbase/vm/gc/concurrent tests (P4) JDK-8269914: Factor out heap printing for G1 young and full gc (P4) JDK-8329570: G1: Excessive is_obj_dead_cond calls in verification (P4) JDK-8310031: Parallel: Implement better work distribution for large object arrays in old gen (P4) JDK-8278893: Parallel: Remove GCWorkerDelayMillis (P4) JDK-8322503: Shenandoah: Clarify gc state usage hotspot/jfr: (P3) JDK-8286740: JFR: Active Setting event emitted incorrectly (P4) JDK-8305931: jdk/jfr/jcmd/TestJcmdDumpPathToGCRoots.java failed with "Expected chains but found none" (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/runtime: (P3) JDK-8328812: Update and move siphash license (P4) JDK-8324824: AArch64: Detect Ampere-1B core and update default options for Ampere CPUs (P4) JDK-8320005: Allow loading of shared objects with .a extension on AIX (P4) JDK-8314832: Few runtime/os tests ignore vm flags (P4) JDK-8280056: gtest/LargePageGtests.java#use-large-pages failed "os.release_one_mapping_multi_commits_vm" (P4) JDK-8325496: Make TrimNativeHeapInterval a product switch (P4) JDK-8319048: Monitor deflation unlink phase prolongs time to safepoint (P4) JDK-8275334: Move class loading Events to a separate section in hs_err files (P4) JDK-8327059: os::Linux::print_proc_sys_info add swappiness information (P4) JDK-8315652: RISC-V: Features string uses wrong separator for jtreg (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-8325862: set -XX:+ErrorFileToStderr when executing java in containers for some container related jtreg tests (P4) JDK-8324598: use mem_unit when working with sysinfo memory and swap related information (P5) JDK-8330156: RISC-V: Range check auipc + signed 12 imm instruction (P5) JDK-8316186: RISC-V: Remove PlatformCmpxchg<4> hotspot/svc: (P4) JDK-8312916: Remove remaining usages of -Xdebug from test/hotspot/jtreg (P4) JDK-8316462: sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java ignores VM flags hotspot/test: (P4) JDK-8326006: Allow TEST_VM_FLAGLESS to set flagless mode (P4) JDK-8325876: crashes in docker container tests on Linuxppc64le Power8 machines (P4) JDK-8323994: gtest runner repeats test name for every single gtest assertion (P4) JDK-8323717: Introduce test keyword for tests that need external dependencies (P4) JDK-8322920: Some ProcessTools.execute* functions are declared to throw Throwable (P5) JDK-8320129: "top" command during jtreg failure handler does not display CPU usage on OSX infrastructure: (P4) JDK-8326794: Bump update version for OpenJDK: jdk-17.0.12 infrastructure/build: (P1) JDK-8328948: GHA: Restoring sysroot from cache skips the build after JDK-8326960 (P3) JDK-8325972: Add -x to bash for building with LOG=debug (P4) JDK-8301753: AppendFile/WriteFile has differences between make 3.81 and 4+ (P4) JDK-8331113: createJMHBundle.sh support configurable maven repo mirror (P4) JDK-8325213: Flags introduced by configure script are not passed to ADLC build (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-8324723: GHA: Upgrade some actions to avoid deprecated Node 16 (P4) JDK-8326891: Prefer RPATH over RUNPATH for $ORIGIN rpaths in internal JDK binaries other-libs: (P3) JDK-8285452: Add a new test library API to replace a file content using FileUtils.java security-libs: (P3) JDK-8280546: Remove hard-coded 127.0.0.1 loopback address (P3) JDK-8319128: sun/security/pkcs11 tests fail on OL 7.9 aarch64 (P4) JDK-8326942: [17u] Backout "8325254: CKA_TOKEN private and secret keys are not necessarily sensitive" (P4) JDK-8296190: TestMD5Intrinsics and TestMD5MultiBlockIntrinsics don't test the intrinsics security-libs/java.security: (P3) JDK-8281658: Add a security category to the java -XshowSettings option (P3) JDK-8328825: Google CAInterop test failures (P3) JDK-8326643: JDK server does not send a dummy change_cipher_spec record after HelloRetryRequest message (P3) JDK-8314283: Support for NSS tests on aarch64 platforms (P3) JDK-8286045: Use ForceGC for cleaner test cases (P4) JDK-8289401: Add dump output to TestRawRSACipher.java (P4) JDK-8305169: java/security/cert/CertPathValidator/OCSP/GetAndPostTests.java -- test server didn't start in timely manner security-libs/javax.crypto:pkcs11: (P3) JDK-8319136: Skip pkcs11 tests on linux-aarch64 (P3) JDK-8295343: sun/security/pkcs11 tests fail on Linux RHEL 8.6 and newer (P4) JDK-8325254: CKA_TOKEN private and secret keys are not necessarily sensitive security-libs/javax.net.ssl: (P3) JDK-8256660: Disable DTLS 1.0 (P4) JDK-8312383: Log X509ExtendedKeyManager implementation class name in TLS/SSL connection (P4) JDK-8301381: Verify DTLS 1.0 cannot be negotiated 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 tools: (P4) JDK-8297695: Fix typos in test/langtools files tools/javac: (P4) JDK-8296137: diags-examples.xml is broken (P4) JDK-8290901: Reduce use of -source in langtools tests (P4) JDK-8163229: several regression tests have a main method that is never executed tools/javadoc(tool): (P3) JDK-8290126: Add a check in JavadocTester for "javadoc should not crash" (P4) JDK-8311893: Interactive component with ARIA role 'tabpanel' does not have a programmatically associated name (P4) JDK-8286311: remove boilerplate from use of runTests tools/jlink: (P4) JDK-8159927: Add a test to verify JMOD files created in the images do not have debug symbols (P4) JDK-8273774: CDSPluginTest should only expect classes_nocoops.jsa exists on supported 64-bit platforms (P4) JDK-8272916: Copyright year was modified unintentionally in jlink.properties and ImagePluginStack.java (P4) JDK-8264322: Generate CDS archive when creating custom JDK image tools/jpackage: (P4) JDK-8316563: test tools/jpackage/linux/LinuxResourceTest.java fails on CentOS Linux release 8.5.2111 and Fedora 27 tools/launcher: (P4) JDK-8268974: GetJREPath() JLI function fails to locate libjava.so if not standard Java launcher is used