RELEASE NOTES FOR: 17.0.4 ==================================================================================================== Notes generated: Wed Apr 03 04:54:33 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: core-libs/java.net: JDK-8279842: HTTPS Channel Binding Support for Java GSS/Kerberos Support has been added for TLS channel binding tokens for Negotiate/Kerberos authentication over HTTPS through javax.net.HttpsURLConnection. Channel binding tokens are increasingly required as an enhanced form of security. They work by communicating from a client to a server the client's understanding of the binding between connection security, as represented by a TLS server cert, and higher level authentication credentials, such as a username and password. The server can then detect if the client has been fooled by a MITM and shutdown the session or connection. The feature is controlled through a new system property `jdk.https.negotiate.cbt` which is described fully in [Networking Properties](https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/doc-files/net-properties.html#jdk.https.negotiate.cbt). core-libs/java.lang: JDK-8282008: Incorrect Handling of Quoted Arguments in ProcessBuilder ProcessBuilder on Windows is restored to its previous functionality to address a regression caused by JDK-8250568. Previously, an argument to ProcessBuilder that started with a double-quote and ended with a backslash followed by a double-quote was passed as a command incorrectly and may have caused the command to fail. For example the argument `"C:\\Program Files\"`, would be seen as a command with extra double-quotes. This update restores the long standing behavior that does not treat the backslash before the final double-quote specially. core-libs/java.util.jar: JDK-8193682: Default JDK Compressor Will Be Closed when IOException Is Encountered `DeflaterOutputStream.close()` and `GZIPOutputStream.finish()` methods have been modified to close out the associated default JDK compressor before propagating a Throwable up the stack. `ZIPOutputStream.closeEntry()` method has been modified to close out the associated default JDK compressor before propagating an IOException, not of type ZipException, up the stack. core-libs/java.io: JDK-8285445: New System Property to Disable Windows Alternate Data Stream Support in java.io.File The Windows implementation of `java.io.File` allows access to NTFS Alternate Data Streams (ADS) by default. Such streams have a structure like “filename:streamname”. A system property `jdk.io.File.enableADS` has been added to control this behavior. To disable ADS support in `java.io.File`, the system property `jdk.io.File.enableADS` should be set to `false` (case ignored). Stricter path checking however prevents the use of special devices such as `NUL:` ALL FIXED ISSUES, BY COMPONENT AND PRIORITY: client-libs: (P4) JDK-8281338: NSAccessibilityPressAction action for tree node and NSAccessibilityShowMenuAcgtion action not working client-libs/2d: (P3) JDK-8240756: [macos] SwingSet2:TableDemo:Printed Japanese characters were garbled (P3) JDK-8283217: Leak FcObjectSet in getFontConfigLocations() in fontpath.c (P3) JDK-8285686: Update FreeType to 2.12.0 (P4) JDK-8280964: [Linux aarch64] : drawImage dithers TYPE_BYTE_INDEXED images incorrectly (P4) JDK-8285397: JNI exception pending in CUPSfuncs.c:250 (P4) JDK-8282628: Potential memory leak in sun.font.FontConfigManager.getFontConfig() (P4) JDK-8181571: printing to CUPS fails on mac sandbox app (P4) JDK-8278549: UNIX sun/font coding misses SUSE distro detection on recent distro SUSE 15 client-libs/java.awt: (P3) JDK-8274751: Drag And Drop hangs on Windows (P3) JDK-8274939: Incorrect size of the pixel storage is used by the robot on macOS (P3) JDK-8284023: java.sun.awt.X11GraphicsDevice.getDoubleBufferVisuals() leaks XdbeScreenVisualInfo (P3) JDK-8284033: Leak XVisualInfo in getAllConfigs in awt_GraphicsEnv.c (P4) JDK-8280956: Re-examine copyright headers on files in src/java.desktop/macosx/native/libawt_lwawt/awt/a11y (P4) JDK-8249592: Robot.mouseMove moves cursor to incorrect location when display scale varies and Java runs in DPI Unaware mode client-libs/java.awt:i18n: (P3) JDK-8278472: Invalid value set to CANDIDATEFORM structure (P3) JDK-8282422: JTable.print() failed with UnsupportedCharsetException on AIX ko_KR locale client-libs/javax.accessibility: (P3) JDK-8279586: [macos] custom JCheckBox and JRadioBox with custom icon set: focus is still displayed after unchecking (P3) JDK-8279227: Access Bridge: Wrong frame position and hit test result on HiDPI display (P3) JDK-8277922: Unable to click JCheckBox in JTable through Java Access Bridge (P4) JDK-8283347: [macos] Bad JNI lookup accessibilityHitTest is shown when Screen magnifier is enabled client-libs/javax.imageio: (P3) JDK-8274735: javax.imageio.IIOException: Unsupported Image Type while processing a valid JPEG image client-libs/javax.swing: (P4) JDK-8139173: [macosx] JInternalFrame shadow is not properly drawn (P4) JDK-8284884: Replace polling with waiting in javax/swing/text/html/parser/Parser/8078268/bug8078268.java core-libs: (P3) JDK-8284992: Fix misleading Vector API doc for LSHR operator (P4) JDK-8278014: [vectorapi] Remove test run script (P4) JDK-8286029: Add classpath exemption to globals_vectorApiSupport_***.S.inc core-libs/java.io: (P3) JDK-8285445: cannot open file "NUL:" (P4) JDK-8285523: Improve test java/io/FileOutputStream/OpenNUL.java core-libs/java.io:serialization: (P3) JDK-8278065: Refactor subclassAudits to use ClassValue (P4) JDK-8268595: java/io/Serializable/serialFilter/GlobalFilterTest.java#id1 failed in timeout (P4) JDK-8277072: ObjectStreamClass caches keep ClassLoaders alive (P4) JDK-8280041: Retry loop issues in java.io.ClassCache core-libs/java.lang: (P3) JDK-8282008: Incorrect handling of quoted arguments in ProcessBuilder (P4) JDK-8276880: Remove java/lang/RuntimeTests/exec/ExecWithDir as unnecessary core-libs/java.lang.invoke: (P4) JDK-8281168: Micro-optimize VarForm.getMemberName for interpreter core-libs/java.lang.module: (P3) JDK-8282444: Module finder incorrectly assumes default file system path-separator character core-libs/java.net: (P3) JDK-8282293: Domain value for system property jdk.https.negotiate.cbt should be case-insensitive (P3) JDK-8279842: HTTPS Channel Binding support for Java GSS/Kerberos (P4) JDK-8273142: Remove dependancy of TestHttpServer, HttpTransaction, HttpCallback from open/test/jdk/sun/net/www/protocol/http/ tests (P4) JDK-8274561: sun/net/ftp/TestFtpTimeValue.java timed out on slow machines (P4) JDK-8286293: Tests ShortResponseBody and ShortResponseBodyWithRetry should use less resources core-libs/java.nio: (P3) JDK-8285515: (dc) DatagramChannel.disconnect fails with "Invalid argument" on macOS 12.4 (P3) JDK-8286594: (zipfs) Mention paths with dot elements in ZipException and cleanups (P3) JDK-8287162: (zipfs) Performance regression related to support for POSIX file permissions (P4) JDK-8285956: (fs) Excessive default poll interval in PollingWatchService (P4) JDK-8272964: java/nio/file/Files/InterruptCopy.java fails with java.lang.RuntimeException: Copy was not interrupted core-libs/java.text: (P3) JDK-8282929: Localized monetary symbols are not reflected in `toLocalizedPattern` return value core-libs/java.time: (P3) JDK-8283350: (tz) Update Timezone Data to 2022a core-libs/java.util: (P4) JDK-8284866: Add test to JDK-8273056 (P4) JDK-8273056: java.util.random does not correctly sample exponential or Gaussian distributions (P4) JDK-8282551: Properly initialize L32X64MixRandom state core-libs/java.util.jar: (P4) JDK-8278794: Infinite loop in DeflaterOutputStream.finish() (P4) JDK-8193682: Infinite loop in ZipOutputStream.close() (P4) JDK-8277087: ZipException: zip END header not found at ZipFile#Source.findEND core-libs/java.util.regex: (P4) JDK-8273169: java/util/regex/NegativeArraySize.java failed after JDK-8271302 (P4) JDK-8269753: Misplaced caret in PatternSyntaxException's detail message (P5) JDK-8271302: Regex Test Refresh core-libs/java.util:i18n: (P4) JDK-8282887: Potential memory leak in sun.util.locale.provider.HostLocaleProviderAdapterImpl.getNumberPattern() on Windows core-svc/debugger: (P3) JDK-8281615: Deadlock caused by jdwp agent (P3) JDK-8276990: Memory leak in invoker.c fillInvokeRequest() during JDI operations (P3) JDK-8284094: Memory leak in invoker_completeInvokeRequest() (P4) JDK-8274687: JDWP deadlocks if some Java thread reaches wait in blockOnDebuggerSuspend core-svc/javax.management: (P4) JDK-8206187: javax/management/remote/mandatory/connection/DefaultAgentFilterTest.java fails with Port already in use docs/hotspot: (P4) JDK-8280543: Update the "java" and "jcmd" tool specification for CDS hotspot/compiler: (P2) JDK-8279837: C2: assert(is_Loop()) failed: invalid node class: Region (P2) JDK-8275638: GraphKit::combine_exception_states fails with "matching stack sizes" assert (P2) JDK-8279356: Method linking fails with guarantee(mh->adapter() != NULL) failed: Adapter blob must already exist! (P3) JDK-8282509: [exploded image] ResolvedClassTest fails with similar output (P3) JDK-8279437: [JVMCI] exception in HotSpotJVMCIRuntime.translate can exit the VM (P3) JDK-8281266: [JVMCI] MetaUtil.toInternalName() doesn't handle hidden classes correctly (P3) JDK-8279219: [REDO] C2 crash when allocating array of size too large (P3) JDK-8265317: [vector] assert(payload->is_object()) failed: expected 'object' value for scalar-replaced boxed vector but got: NULL (P3) JDK-8281811: assert(_base == Tuple) failed: Not a Tuple after JDK-8280799 (P3) JDK-8281544: assert(VM_Version::supports_avx512bw()) failed for Tests jdk/incubator/vector/ (P3) JDK-8256368: Avoid repeated upcalls into Java to re-resolve MH/VH linkers/invokers (P3) JDK-8282874: Bad performance on gather/scatter API caused by different IntSpecies of indexMap (P3) JDK-8274983: C1 optimizes the invocation of private interface methods (P3) JDK-8275337: C1: assert(false) failed: live_in set of first block must be empty (P3) JDK-8279515: C1: No inlining through invokedynamic and invokestatic call sites when resolved class is not linked (P3) JDK-8280600: C2: assert(!had_error) failed: bad dominance (P3) JDK-8283451: C2: assert(_base == Long) failed: Not a Long (P3) JDK-8282590: C2: assert(addp->is_AddP() && addp->outcnt() > 0) failed: Don't process dead nodes (P3) JDK-8273139: C2: assert(f <= 1 && f >= 0) failed: Incorrect frequency (P3) JDK-8282592: C2: assert(false) failed: graph should be schedulable (P3) JDK-8275854: C2: assert(stride_con != 0) failed: missed some peephole opt (P3) JDK-8275830: C2: Receiver downcast is missing when inlining through method handle linkers (P3) JDK-8279822: CI: Constant pool entries in error state are not supported (P3) JDK-8278948: compiler/vectorapi/reshape/TestVectorCastAVX1.java crashes in assembler (P3) JDK-8280867: Cpuid1Ecx feature parsing is incorrect for AMD CPUs (P3) JDK-8283408: Fix a C2 crash when filling arrays with unsafe (P3) JDK-8278796: Incorrect behavior of FloatVector.withLane on x86 (P3) JDK-8286013: Incorrect test configurations for compiler/stable/TestStableShort.java (P3) JDK-8277906: Incorrect type for IV phi of long counted loops after CCP (P3) JDK-8283641: Large value for CompileThresholdScaling causes assert (P3) JDK-8280901: MethodHandle::linkToNative stub is missing w/ -Xint (P3) JDK-8282312: Minor corrections to evbroadcasti32x4 intrinsic on x86 (P3) JDK-8281822: Test failures on non-DTrace builds due to incomplete DTrace* flags handling (P3) JDK-8236136: tests which use CompilationMode shouldn't be run w/ TieredStopAtLevel (P3) JDK-8278966: two microbenchmarks tests fail "assert(!jvms->method()->has_exception_handlers()) failed: no exception handler expected" after JDK-8275638 (P3) JDK-8274855: vectorapi tests failing with assert(!vbox->is_Phi()) failed (P3) JDK-8273095: vmTestbase/vm/mlvm/anonloader/stress/oome/heap/Test.java fails with "wrong OOME" (P3) JDK-8282231: x86-32: runtime call to SharedRuntime::ldiv corrupts registers (P3) JDK-8280799: С2: assert(false) failed: cyclic dependency prevents range check elimination (P4) JDK-8282142: [TestCase] compiler/inlining/ResolvedClassTest.java will fail when --with-jvm-features=-compiler1 (P4) JDK-8279560: AArch64: generate_compare_long_string_same_encoding and LARGE_LOOP_PREFETCH alignment (P4) JDK-8268231: Aarch64: Use Ldp in intrinsics for String.compareTo (P4) JDK-8271008: appcds/*/MethodHandlesAsCollectorTest.java tests time out because of excessive GC (CodeCache GC Threshold) in loom (P4) JDK-8277893: Arraycopy stress tests (P4) JDK-8277055: Assert "missing inlining msg" with -XX:+PrintIntrinsics (P4) JDK-8284848: C2: Compiler blackhole arguments should be treated as globally escaping (P4) JDK-8280123: C2: Infinite loop in CMoveINode::Ideal during IGVN (P4) JDK-8283187: C2: loop candidate for superword not always unrolled fully if superword fails (P4) JDK-8284620: CodeBuffer may leak _overflow_arena (P4) JDK-8284458: CodeHeapState::aggregate() leaks blob_name (P4) JDK-8258814: Compilation logging crashes for thread suspension / debugging tests (P4) JDK-8282172: CompileBroker::log_metaspace_failure is called from non-Java/compiler threads (P4) JDK-8285394: Compiler blackholes can be eliminated due to stale ciMethod::intrinsic_id() (P4) JDK-8271055: Crash during deoptimization with "assert(bb->is_reachable()) failed: getting result from unreachable basicblock" with -XX:+VerifyStack (P4) JDK-8283422: Create a new test for JDK-8254790 (P4) JDK-8281043: Intrinsify recursive ObjectMonitor locking for PPC64 (P4) JDK-8269129: Multiple tier1 tests in hotspot/jtreg/compiler are failing for client VMs (P4) JDK-8281522: Rename ADLC classes which have the same name as hotspot variants (P4) JDK-8272493: Suboptimal code generation around Preconditions.checkIndex intrinsic with AVX2 (P4) JDK-8284369: TestFailedAllocationBadGraph fails with -XX:TieredStopAtLevel < 4 (P4) JDK-8270468: TestRangeCheckEliminated fails because methods are not compiled (P4) JDK-8283834: Unmappable character for US-ASCII encoding in TestPredicateInputBelowLoopPredicate (P4) JDK-8279668: x86: AVX2 versions of vpxor should be asserted (P5) JDK-8282045: When loop strip mining fails, safepoints are removed from loop anyway hotspot/gc: (P2) JDK-8263461: jdk/jfr/event/gc/detailed/TestEvacuationFailedEvent.java uses wrong mechanism to cause evacuation failure (P3) JDK-8276796: gc/TestSystemGC.java large pages subtest fails with ZGC (P4) JDK-8268906: gc/g1/mixedgc/TestOldGenCollectionUsage.java assumes that GCs take 1ms minimum (P4) JDK-8270021: Incorrect log decorators in gc/g1/plab/TestPLABEvacuationFailure.java (P4) JDK-8269077: TestSystemGC uses "require vm.gc.G1" for large pages subtest hotspot/jfr: (P3) JDK-8284549: JFR: FieldTable leaks FieldInfoTable member (P3) JDK-8284532: Memory leak in BitSet::BitMapFragmentTable in JFR leak profiler (P4) JDK-8281318: Improve jfr/event/allocation tests reliability (P4) JDK-8281638: jfr/event/allocation tests fail with release VMs after JDK-8281318 due to lack of -XX:+UnlockDiagnosticVMOptions (P4) JDK-8280684: JfrRecorderService failes with guarantee(num_written > 0) when no space left on device. hotspot/jvmti: (P3) JDK-8287362: FieldAccessWatch testcase failed on AIX platform (P4) JDK-8282170: JVMTI SetBreakpoint metaspace allocation test (P4) JDK-8278519: serviceability/jvmti/FieldAccessWatch/FieldAccessWatch.java failed "assert(handle != __null) failed: JNI handle should not be null" (P4) JDK-8264605: vmTestbase/nsk/jvmti/SuspendThread/suspendthrd003/TestDescription.java failed with "agent_tools.cpp, 471: (foundThread = (jthread) jni_env->NewGlobalRef(foundThread)) != NULL" hotspot/runtime: (P2) JDK-8280476: [macOS] : hotspot arm64 bug exposed by latest clang (P3) JDK-8281274: deal with ActiveProcessorCount in os::Linux::print_container_info (P3) JDK-8283469: Don't use memset to initialize members in FileMapInfo and fix memory leak (P3) JDK-8284754: print more interesting env variables in hs_err and VM.info (P3) JDK-8282295: SymbolPropertyEntry::set_method_type fails with assert (P3) JDK-8275037: Test vmTestbase/nsk/sysdict/vm/stress/btree/btree011/btree011.java crashes with memory exhaustion on Windows (P3) JDK-8281275: Upgrading from 8 to 11 no longer accepts '/' as filepath separator in gc paths (P4) JDK-8286198: [linux] Fix process-memory information (P4) JDK-8284758: [linux] improve print_container_info (P4) JDK-8280593: [PPC64, S390] redundant allocation of MacroAssembler in StubGenerator ctor (P4) JDK-8283497: [windows] print TMP and TEMP in hs_err and VM.info (P4) JDK-8283249: CompressedClassPointers.java fails on ppc with 'Narrow klass shift: 0' missing (P4) JDK-8281771: Crash in java_lang_invoke_MethodType::print_signature (P4) JDK-8272146: Disable Fibonacci test on memory constrained systems (P4) JDK-8270837: fix typos in test TestSigParse.java (P4) JDK-8280940: gtest os.release_multi_mappings_vm is racy (P4) JDK-8282345: handle latest VS2022 in abstract_vm_version (P4) JDK-8276825: hotspot/runtime/SelectionResolution test errors (P4) JDK-8268773: Improvements related to: Failed to start thread - pthread_create failed (EAGAIN) (P4) JDK-8283725: Launching java with "-Xlog:gc*=trace,safepoint*=trace,class*=trace" crashes the JVM (P4) JDK-8280941: os::print_memory_mappings() prints segment preceeding the inclusion range (P4) JDK-8281450: Remove unnecessary operator new and delete from ObjectMonitor (P4) JDK-8267163: Rename anonymous loader tests to hidden loader tests (P4) JDK-8282382: Report glibc malloc tunables in error reports (P4) JDK-8214733: runtime/8176717/TestInheritFD.java timed out (P4) JDK-8271224: runtime/EnclosingMethodAttr/EnclMethodAttr.java doesn't check exit code (P4) JDK-8285828: runtime/execstack/TestCheckJDK.java fails with zipped debug symbols (P4) JDK-8272169: runtime/logging/LoaderConstraintsTest.java doesn't build test.Empty (P4) JDK-8263538: SharedArchiveConsistency.java should test -Xshare:auto as well (P4) JDK-8272168: some hotspot runtime/logging tests don't check exit code (P4) JDK-8269135: TestDifferentProtectionDomains runs into timeout in client VM (P4) JDK-8270435: UT: MonitorUsedDeflationThresholdTest failed: did not find too_many string in output (P4) JDK-8251904: vmTestbase/nsk/sysdict/vm/stress/btree/btree010/btree010.java fails with ClassNotFoundException: nsk.sysdict.share.BTree0LLRLRLRRLR (P4) JDK-8285342: Zero build failure with clang due to values not handled in switch hotspot/svc: (P4) JDK-8280004: DCmdArgument::parse_value() should handle NULL input (P4) JDK-8285921: serviceability/dcmd/jvmti/AttachFailed/AttachReturnError.java fails on Alpine hotspot/test: (P4) JDK-8273804: Platform.isTieredSupported should handle the no-compiler case infrastructure: (P4) JDK-8282499: Bump update version for OpenJDK: jdk-17.0.4 infrastructure/build: (P2) JDK-8287378: GHA: Update cygwin to fix issues in langtools tests on Windows (P3) JDK-8275745: Reproducible copyright headers (P4) JDK-8284603: [17u] Update Boot JDK used in GHA to 17.0.2 (P4) JDK-8285728: Alpine Linux build fails with busybox tar (P4) JDK-8279834: Alpine Linux fails to build when --with-source-date enabled (P4) JDK-8284437: Building from different users/workspace is not always deterministic (P4) JDK-8278766: Enable OpenJDK build support for reproducible jars and jmods using --date (P4) JDK-8282225: GHA: Allow one concurrent run per PR only (P4) JDK-8284507: GHA: Only check test results if testing was not skipped (P4) JDK-8287336: GHA: Workflows break on patch versions (P4) JDK-8283017: GHA: Workflows break with update release versions (P4) JDK-8284389: Improve stability of GHA Pre-submit testing by caching cygwin installer (P4) JDK-8283315: jrt-fs.jar not always deterministically built (P4) JDK-8283323: libharfbuzz optimization level results in extreme build times (P4) JDK-8286601: Mac Aarch: Excessive warnings to be ignored for build jdk (P4) JDK-8279182: MakeZipReproducible ZipEntry timestamps not localized to UTC (P4) JDK-8279958: Provide configure hints for Alpine/apk package managers (P4) JDK-8284661: Reproducible assembly builds without relative linking (P4) JDK-8284622: Update versions of some Github Actions used in JDK workflow (P4) JDK-8281262: Windows builds in different directories are not fully reproducible security-libs/java.security: (P3) JDK-8278851: Correct signer logic for jars signed with multiple digest algorithms (P3) JDK-8287109: Distrust.java failed with CertificateExpiredException (P3) JDK-8255266: Update Public Suffix List to 3c213aa (P4) JDK-8209776: Refactor jdk/security/JavaDotSecurity/ifdefs.sh to plain java test (P4) JDK-8276863: Remove test/jdk/sun/security/ec/ECDSAJavaVerify.java (P4) JDK-8269933: test/jdk/javax/net/ssl/compatibility/JdkInfo incorrect verification of protocol and cipher support security-libs/javax.xml.crypto: (P4) JDK-8272908: Missing coverage for certain classes in com.sun.org.apache.xml.internal.security (P4) JDK-8278186: org.jcp.xml.dsig.internal.dom.Utils.parseIdFromSameDocumentURI throws StringIndexOutOfBoundsException when calling substring method (P4) JDK-8270797: ShortECDSA.java test is not complete security-libs/org.ietf.jgss: (P3) JDK-8279520: SPNEGO has not passed channel binding info into the underlying mechanism (P4) JDK-8280401: [sspi] gss_accept_sec_context leaves output_token uninitialized tools: (P3) JDK-8277165: jdeps --multi-release --print-module-deps fails if module-info.class in different versioned directories (P4) JDK-8277166: Data race in jdeps VersionHelper (P4) JDK-8277123: jdeps does not report some exceptions correctly (P4) JDK-8272358: Some tests may fail when executed with other locales than the US (P4) JDK-8277422: tools/jar/JarEntryTime.java fails with modified time mismatch tools/javac: (P3) JDK-8286855: javac error on invalid jar should only print filename (P3) JDK-8286444: javac errors after JDK-8251329 are not helpful enough to find root cause (P4) JDK-8274233: Minor cleanup for ToolBox (P4) JDK-8274244: ReportOnImportedModuleAnnotation.java fails on rerun tools/javadoc(tool): (P4) JDK-8274172: Convert JavadocTester to use NIO tools/launcher: (P4) JDK-8269373: some tests in jdk/tools/launcher/ fails on localized Windows platform xml/jaxp: (P4) JDK-8285726: [11u, 17u] Unify fix for JDK-8284548 with version from head (P4) JDK-8285727: [11u, 17u] Unify fix for JDK-8284920 with version from head (P4) JDK-8282583: Update BCEL md to include the copyright notice (P4) JDK-8276657: XSLT compiler tries to define a class with empty name