RELEASE NOTES: JDK 17.0.12

Notes generated: Wed May 01 06:53:13 CEST 2024

JEPs

None.

RELEASE NOTES

security-libs/javax.security

Issue Description
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

Issue Description
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

Issue Description
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

Issue Description
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

Issue Description
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

Issue Description
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.


FIXED ISSUES

client-libs

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
P4 JDK-8326140 src/jdk.accessibility/windows/native/libjavaaccessbridge/AccessBridgeJavaEntryPoints.cpp ReleaseStringChars might be missing in early returns

client-libs/javax.swing

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
P4 JDK-8307411 Test java/foreign/channels/TestAsyncSocketChannels.java failed: IllegalStateException: Already closed

core-libs/java.lang.invoke

Priority Bug Summary
P4 JDK-8280377 MethodHandleProxies does not correctly invoke default methods with varags

core-libs/java.lang:class_loading

Priority Bug Summary
P4 JDK-8309763 Move tests in test/jdk/sun/misc/URLClassPath directory to test/jdk/jdk/internal/loader

core-libs/java.math

Priority Bug Summary
P4 JDK-8294137 Review running times of java.math tests

core-libs/java.net

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
P4 JDK-8298939 Refactor open/test/jdk/javax/rmi/ssl/SSLSocketParametersTest.sh to jtreg java test

core-libs/java.util

Priority Bug Summary
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

Priority Bug Summary
P3 JDK-8318809 java/util/concurrent/ConcurrentLinkedQueue/WhiteBox.java shows intermittent failures on linux ppc64le and aarch64

core-libs/java.util.jar

Priority Bug Summary
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

Priority Bug Summary
P4 JDK-8329013 StackOverflowError when starting Apache Tomcat with signed jar

core-libs/java.util:collections

Priority Bug Summary
P4 JDK-8328066 WhiteBoxResizeTest failure on linux-x86: Could not reserve enough space for 2097152KB object heap

core-libs/java.util:i18n

Priority Bug Summary
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

Priority Bug Summary
P4 JDK-8320712 Rewrite BadFactoryTest in pure Java

core-svc/debugger

Priority Bug Summary
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

Priority Bug Summary
P3 JDK-8299858 [Metrics] Swap memory limit reported incorrectly when too large

core-svc/javax.management

Priority Bug Summary
P4 JDK-8302069 javax/management/remote/mandatory/notif/NotifReconnectDeadlockTest.java update

hotspot/compiler

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
P4 JDK-8326794 Bump update version for OpenJDK: jdk-17.0.12

infrastructure/build

Priority Bug Summary
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

Priority Bug Summary
P3 JDK-8285452 Add a new test library API to replace a file content using FileUtils.java

security-libs

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
P4 JDK-8329213 Better validation for com.sun.security.ocsp.useget option
P4 JDK-8328638 Fallback option for POST-only OCSP requests

tools

Priority Bug Summary
P4 JDK-8297695 Fix typos in test/langtools files

tools/javac

Priority Bug Summary
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)

Priority Bug Summary
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

Priority Bug Summary
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

Priority Bug Summary
P4 JDK-8316563 test tools/jpackage/linux/LinuxResourceTest.java fails on CentOS Linux release 8.5.2111 and Fedora 27

tools/launcher

Priority Bug Summary
P4 JDK-8268974 GetJREPath() JLI function fails to locate libjava.so if not standard Java launcher is used