Liberica JDK 23.0.2+9: Release Notes
1. Version information
This document provides information about Liberica JDK 23.0.2 release.
The full version string for this update release is 23.0.2+9. The version number is 23.
Liberica JDK 23 is distributed as .apk
, .rpm
, .zip
, .deb
, and .tar.gz
packages. Please select the most appropriate for your purposes.
2. What’s New
This release contains the following updates and new features.
Notable Changes
This is the list of the notable issues fixed in this release.
Issue ID | |
---|---|
JDK-8337354 | Summary: Add explicit non-null return value expectations to Object.toString() Description: An explicit non-null return value expectations were added to Object.toString() method. |
JDK-8337359 | Summary: MemorySegment::reinterpret removes read-only property Description: The MemorySegment::reinterpret method returned a new memory segment that did not carry over the read-only property of the segment it was create from, but it should have. |
JDK-8337360 | Summary: Chained builders not sending transformed models to next transforms Description: ClassFile API chained builders did not emit certain elements through downstream transforms and returned wrong builder for chaining. |
JDK-8338163 | Summary: Distrust TLS server certificates issued after Oct 2024 and anchored by Entrust Root CAs Description: Google and Mozilla have announced plans to distrust TLS Server certificates issued by Entrust. This enhancement implements similar restrictions in the JDK. The restrictions is enforced in the SunJSSE Provider of the Java Secure Socket Extension (JSSE) API. A TLS session will not be negotiated if the server’s certificate chain is anchored by any of the Certificate Authorities specified in this issue and the certificate’s notBefore date is after October 31, 2024. If necessary, you can work around the restrictions by removing 'ENTRUST_TLS' from the 'jdk.security.caDistrustPolicies' security property. |
JDK-8338914 | Summary: BasicFileAttributes.creationTime() falls back to epoch if birth time is unavailable (Linux) Description: The change which resolved JDK-8316304 added support for obtaining the file creation time from the birth timestamp. Prior to this change, the last modified time had been returned to the creation time. After this change, if the birth timestamp was unavailable, for example if it was not supported by the file system even though the operating system supported it, then the epoch (0) was returned to the creation time. This could cause problems in situations which relied on the old behavior. |
JDK-8339724 | Summary: {ClassLoading,Memory}MXBean::isVerbose methods are inconsistent with their setVerbose methods Description: The ClassLoadingMXBean and MemoryMXBean APIs have setVerbose methods to control verbose mode and isVerbose methods to query it. Some JCK tests expect setVerbose(false) to disable verbose mode and, subsequently, isVerbose() to return false. However, if logging to a file is enabled by using '-Xlog' on the java launcher command line, isVerbose() returned true even after calling setVerbose(false). |
JDK-8341129 | Summary: Add 2 SSL.com TLS roots Description: New SSL.com TLS roots are added as they are the issuing CA used by Entrust going forward. |
JDK-8341130 | Summary: Change Entrust TLS distrust date to November 12, 2024 Description: Google has changed their distrust date for Entrust from November 1 to November 12, 2024. Entrust has also changed the date they plan to use SSL.com as the issuing CA for public TLS server certificates to November 12. To align with those updated dates, the distrust date was changed to November 12, 2024. |
JDK-8342297 | Summary: Update Timezone Data to 2024b Description: This OpenJDK release upgrades the in-tree copy of the IANA timezone database to 2024b. This timezone update is primarily concerned with improving historical data for Mexico, Mongolia and Portugal. It also makes Asia/Choibalsan an alias for Asia/Ulaanbaatar and makes the MET timezone the same as CET. |
Discontinued OS support
Note that Liberica JDK 23.0.2 is not available for and cannot be run on the following operating systems:
-
Windows x86 (32-bit)
-
macOS 10.x
IANA TZ Data update
This release of Liberica JDK 23.0.2 upgrades the in-tree copy of the IANA timezone database to 2024b. This timezone update is primarily concerned with improving historical data for Mexico, Mongolia and Portugal. It also makes Asia/Choibalsan an alias for Asia/Ulaanbaatar and makes the MET timezone the same as CET.
The 2024b update also makes a number of legacy timezone IDs equal to geographical names rather than fixed offsets, as follows:
-
EST → America/Panama instead of -5:00
-
MST → America/Phoenix instead of -7:00
-
HST → Pacific/Honolulu instead of -10:00
For long-term support releases of Liberica JDK, this change is overridden locally to retain the existing fixed offset mapping.
3. Known Issues
This release does not contain any known issues.
4. Fixed CVEs
This is the list of the security issues fixed in this release. CVSS scores are provided using the CVSS version 3.1 scoring system.
CVE ID | CVSS score | Component | Module | Attack Vector | Complexity | Privileges | User Interaction | Scope | Confidentiality | Integrity | Availability |
---|---|---|---|---|---|---|---|---|---|---|---|
CVE-2025-21502 | 4.8 | hotspot | compiler | network | high | none | none | unchanged | low | low | none |
5. Resolved Issues
JDK issues
This is the list of general JDK issues fixed in this release.
Issue ID | Summary |
---|---|
JDK-8028127 | Regtest java/security/Security/SynchronizedAccess.java is incorrect |
JDK-8302111 | Serialization considerations |
JDK-8317116 | Provide layouts for multiple test UI in PassFailJFrame |
JDK-8319933 | Disable tests for JDK-8280481 on Graal |
JDK-8321509 | False positive in get_trampoline fast path causes crash |
JDK-8323688 | C2: Fix UB of jlong overflow in PhaseIdealLoop::is_counted_loop() |
JDK-8324672 | Update jdk/java/time/tck/java/time/TCKInstant.java now() to be more robust |
JDK-8325937 | runtime/handshake/HandshakeDirectTest.java causes "monitor end should be strictly below the frame pointer" assertion failure on AArch64 |
JDK-8326616 | tools/javac/patterns/Exhaustiveness.java intermittently Timeout signalled after 480 seconds |
JDK-8328723 | IP Address error when client enables HTTPS endpoint check on server socket |
JDK-8330045 | Enhance array handling |
JDK-8330702 | Update failure handler to don’t generate Error message if cores actions are empty |
JDK-8331391 | Enhance the keytool code by invoking the buildTrustedCerts method for essential options |
JDK-8332113 | Update nsk.share.Log to be always verbose |
JDK-8332461 | ubsan : dependencies.cpp:906:3: runtime error: load of value 4294967295, which is not a valid value for type 'DepType' |
JDK-8332697 | ubsan: shenandoahSimpleBitMap.inline.hpp:68:23: runtime error: signed integer overflow: -9223372036854775808 - 1 cannot be represented in type 'long int' |
JDK-8332699 | ubsan: jfrEventSetting.inline.hpp:31:43: runtime error: index 163 out of bounds for type 'jfrNativeEventSetting [162]' |
JDK-8332901 | Select{Current,New}ItemTest.java for Choice don’t open popup on macOS |
JDK-8332903 | ubsan: opto/output.cpp:1002:18: runtime error: load of value 171, which is not a valid value for type 'bool' |
JDK-8333088 | ubsan: shenandoahAdaptiveHeuristics.cpp:245:44: runtime error: division by zero |
JDK-8333098 | ubsan: bytecodeInfo.cpp:318:59: runtime error: division by zero |
JDK-8333248 | VectorGatherMaskFoldingTest.java failed when maximum vector bits is 64 |
JDK-8333277 | ubsan: mlib_ImageScanPoly.c:292:43: runtime error: division by zero |
JDK-8333306 | gc/arguments/TestParallelGCErgo.java fails when largepage are enabled |
JDK-8333317 | Test sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java failed with: Invalid ECDH ServerKeyExchange signature |
JDK-8333354 | ubsan: frame.inline.hpp:91:25: and src/hotspot/share/runtime/frame.inline.hpp:88:29: runtime error: member call on null pointer of type 'const struct SmallRegisterMap' |
JDK-8333361 | ubsan,test : libHeapMonitorTest.cpp:518:9: runtime error: null pointer passed as argument 2, which is declared to never be null |
JDK-8333363 | ubsan: instanceKlass.cpp: runtime error: member call on null pointer of type 'struct AnnotationArray' |
JDK-8333391 | Test com/sun/jdi/InterruptHangTest.java failed: Thread was never interrupted during sleep |
JDK-8333522 | JFR SwapSpace event might read wrong free swap space size |
JDK-8333639 | ubsan: cppVtables.cpp:81:55: runtime error: index 14 out of bounds for type 'long int [1]' |
JDK-8333728 | ubsan: shenandoahFreeSet.cpp:1347:24: runtime error: division by zero |
JDK-8333730 | ubsan: FieldIndices/libFieldIndicesTest.cpp:276:11: runtime error: null pointer passed as argument 2, which is declared to never be null |
JDK-8333754 | Add a Test against ECDSA and ECDH NIST Test vector |
JDK-8333791 | Fix memory barriers for @Stable fields |
JDK-8333824 | Unused ClassValue in VarHandles |
JDK-8334057 | JLinkReproducibleTest.java support receive test.tool.vm.opts |
JDK-8334147 | Shenandoah: Avoid taking lock for disabled free set logging |
JDK-8334166 | Enable binary check |
JDK-8334229 | Optimize InterpreterOopMap layout |
JDK-8334405 | java/nio/channels/Selector/SelectWithConsumer.java#id0 failed in testWakeupDuringSelect |
JDK-8334482 | Shenandoah: Deadlock when safepoint is pending during nmethods iteration |
JDK-8334560 | [PPC64]: postalloc_expand_java_dynamic_call_sched does not copy all fields |
JDK-8334562 | Automate com/sun/security/auth/callback/TextCallbackHandler/Default.java test |
JDK-8334564 | VM startup: fatal error: FLAG_SET_ERGO cannot be used to set an invalid value for NonNMethodCodeHeapSize |
JDK-8334567 | [test] runtime/os/TestTracePageSizes move ppc handling |
JDK-8334618 | ubsan: support setting additional ubsan check options |
JDK-8334769 | Shenandoah: Move CodeCache_lock close to its use in ShenandoahConcurrentNMethodIterator |
JDK-8335007 | Inline OopMapCache table |
JDK-8335142 | compiler/c1/TestTraceLinearScanLevel.java occasionally times out with -Xcomp |
JDK-8335150 | Test LogGeneratedClassesTest.java fails on rpmbuild mock enviroment |
JDK-8335172 | Add manual steps to run security/auth/callback/TextCallbackHandler/Password.java test |
JDK-8335237 | ubsan: vtableStubs.hpp is_vtable_stub exclude from ubsan checks |
JDK-8335267 | [XWayland] move screencast tokens from .awt to .java folder |
JDK-8335283 | Build failure due to 'no_sanitize' attribute directive ignored |
JDK-8335344 | test/jdk/sun/security/tools/keytool/NssTest.java fails to compile |
JDK-8335397 | Improve reliability of TestRecursiveMonitorChurn.java |
JDK-8335428 | Enhanced Building of Processes |
JDK-8335449 | runtime/cds/DeterministicDump.java fails with File content different at byte … |
JDK-8335493 | check_gc_overhead_limit should reset SoftRefPolicy::_should_clear_all_soft_refs |
JDK-8335530 | Java file extension missing in AuthenticatorTest |
JDK-8335664 | Parsing jsr broken: assert(bci>= 0 && bci < c→method()→code_size()) failed: index out of bounds |
JDK-8335709 | C2: assert(!loop→is_member(get_loop(useblock))) failed: must be outside loop |
JDK-8335713 | Enhance vectorization analysis |
JDK-8335743 | jhsdb jstack cannot print some information on the waiting thread |
JDK-8335789 | [TESTBUG] XparColor.java test fails with Error. Parse Exception: Invalid or unrecognized bugid: @ |
JDK-8335904 | Fix invalid comment in ShenandoahLock |
JDK-8336148 | Test runtime/locking/TestRecursiveMonitorChurn.java failed: Unexpected Inflation |
JDK-8336240 | Test com/sun/crypto/provider/Cipher/DES/PerformanceTest.java fails with java.lang.ArithmeticException |
JDK-8336284 | Test TestClhsdbJstackLock.java/TestJhsdbJstackLock.java fails with -Xcomp after JDK-8335743 |
JDK-8336315 | tools/jpackage/windows/WinChildProcessTest.java Failed: Check is calculator process is alive |
JDK-8336342 | Fix known X11 library locations in sysroot |
JDK-8336343 | Add more known sysroot library locations for ALSA |
JDK-8336363 | Update the release version after forking Oct CPU24_10 |
JDK-8336413 | gtk headers : Fix typedef redeclaration of GMainContext and GdkPixbuf |
JDK-8336564 | Enhance mask blit functionality redux |
JDK-8336640 | Shenandoah: Parallel worker use in parallel_heap_region_iterate |
JDK-8336692 | Redo fix for JDK-8284620 |
JDK-8336854 | CAInterop.java#actalisauthenticationrootca conflicted with /manual and /timeout |
JDK-8336914 | Shenandoah: Missing verification steps after JDK-8255765 |
JDK-8336926 | jdk/internal/util/ReferencedKeyTest.java can fail with ConcurrentModificationException |
JDK-8336928 | GHA: Bundle artifacts removal broken |
JDK-8336942 | Improve test coverage for class loading elements with annotations of different retentions |
JDK-8337024 | Bump version numbers for 23.0.2 |
JDK-8337066 | Repeated call of StringBuffer.reverse with double byte string returns wrong result |
JDK-8337067 | Test runtime/classFileParserBug/Bad_NCDFE_Msg.java won’t compile |
JDK-8337283 | configure.log is truncated when build dir is on different filesystem |
JDK-8337320 | Update ProblemList.txt with tests known to fail on XWayland |
JDK-8337331 | crash: pinned virtual thread will lead to jvm crash when running with the javaagent option |
JDK-8337622 | IllegalArgumentException in java.lang.reflect.Field.get |
JDK-8337664 | Distrust TLS server certificates issued after Oct 2024 and anchored by Entrust Root CAs |
JDK-8337753 | Target class of upcall stub may be unloaded |
JDK-8337780 | RISC-V: C2: Change C calling convention for sp to NS |
JDK-8337795 | Type annotation attached to incorrect type during class reading |
JDK-8337810 | ProblemList BasicDirectoryModel/LoaderThreadCount.java on Windows |
JDK-8337819 | Update GHA JDKs to 22.0.2 |
JDK-8337876 | [IR Framework] Add support for IR tests with @Stable |
JDK-8337886 | java/awt/Frame/MaximizeUndecoratedTest.java fails in OEL due to a slight color difference |
JDK-8337958 | Out-of-bounds array access in secondary_super_cache |
JDK-8337968 | Problem list compiler/vectorapi/VectorRebracket128Test.java |
JDK-8337971 | Problem list several jvmci tests on linux-riscv64 until JDK-8331704 is fixed |
JDK-8337998 | CompletionFailure in getEnclosingType attaching type annotations |
JDK-8338058 | map_or_reserve_memory_aligned Windows enhance remap assertion |
JDK-8338101 | remove old remap assertion in map_or_reserve_memory_aligned after JDK-8338058 |
JDK-8338109 | java/awt/Mouse/EnterExitEvents/ResizingFrameTest.java duplicate in ProblemList |
JDK-8338110 | Exclude Fingerprinter::do_type from ubsan checks |
JDK-8338112 | Test testlibrary_tests/ir_framework/tests/TestPrivilegedMode.java fails with release build |
JDK-8338286 | GHA: Demote x86_32 to hotspot build only |
JDK-8338380 | Update TLSCommon/interop/AbstractServer to specify an interface to listen for connections |
JDK-8338389 | [JFR] Long strings should be added to the string pool |
JDK-8338402 | GHA: some of bundles may not get removed |
JDK-8338696 | (fs) BasicFileAttributes.creationTime() falls back to epoch if birth time is unavailable (Linux) |
JDK-8338751 | ConfigureNotify behavior has changed in KWin 6.2 |
JDK-8338759 | Add extra diagnostic to java/net/InetAddress/ptr/Lookup.java |
JDK-8338924 | C1: assert(0 ⇐ i && i < _len) failed: illegal index 5 for length 5 |
JDK-8339154 | Cleanups and JUnit conversion of test/jdk/java/util/zip/Available.java |
JDK-8339180 | Enhanced Building of Processes: Follow-on Issue |
JDK-8339248 | RISC-V: Remove li64 macro assembler routine and related code |
JDK-8339384 | Unintentional IOException in jdk.jdi module when JDWP end of stream occurs |
JDK-8339386 | Assertion on AIX - original PC must be in the main code section of the compiled method |
JDK-8339416 | [s390x] Provide implementation for resolve_global_jobject |
JDK-8339487 | ProcessHandleImpl os_getChildren sysctl call - retry in case of ENOMEM and enhance exception message |
JDK-8339548 | GHA: RISC-V: Use Debian snapshot archive for bootstrap |
JDK-8339560 | Unaddressed comments during code review of JDK-8337664 |
JDK-8339591 | Mark jdk/jshell/ExceptionMessageTest.java intermittent |
JDK-8339637 | (tz) Update Timezone Data to 2024b |
JDK-8339644 | Improve parsing of Day/Month in tzdata rules |
JDK-8339648 | ZGC: Division by zero in rule_major_allocation_rate |
JDK-8339725 | Concurrent GC crashed due to GetMethodDeclaringClass |
JDK-8339731 | java.desktop/share/classes/javax/swing/text/html/default.css typo in margin settings |
JDK-8339741 | RISC-V: C ABI breakage for integer on stack |
JDK-8339787 | Add some additional diagnostic output to java/net/ipv6tests/UdpTest.java |
JDK-8339803 | Acknowledge case insensitive unambiguous keywords in tzdata files |
JDK-8340007 | Refactor KeyEvent/FunctionKeyTest.java |
JDK-8340008 | KeyEvent/KeyTyped/Numpad1KeyTyped.java has 15 seconds timeout |
JDK-8340073 | Support "%z" time zone abbreviation format in TZ files |
JDK-8340109 | Ubsan: ciEnv.cpp:1660:65: runtime error: member call on null pointer of type 'struct CompileTask' |
JDK-8340210 | Add positionTestUI() to PassFailJFrame.Builder |
JDK-8340214 | C2 compilation asserts with "no node with a side effect" in PhaseIdealLoop::try_sink_out_of_loop |
JDK-8340230 | Tests crash: assert(is_in_encoding_range || k→is_interface() || k→is_abstract()) failed: sanity |
JDK-8340306 | Add border around instructions in PassFailJFrame |
JDK-8340308 | PassFailJFrame: Make rows default to number of lines in instructions |
JDK-8340313 | Crash due to invalid oop in nmethod after C1 patching |
JDK-8340365 | Position the first window of a window list |
JDK-8340383 | VM issues warning failure to find kernel32.dll on Windows nanoserver |
JDK-8340387 | Update OS detection code to recognize Windows Server 2025 |
JDK-8340398 | [JVMCI] Unintuitive behavior of UseJVMCICompiler option |
JDK-8340418 | GHA: MacOS AArch64 bundles can be removed prematurely |
JDK-8340461 | Amend description for logArea |
JDK-8340466 | Add description for PassFailJFrame constructors |
JDK-8340586 | JdkJfrEvent::get_all_klasses stores non-strong oops in JNI handles |
JDK-8340590 | RISC-V: C2: Small improvement to vector gather load and scatter store |
JDK-8340657 | [PPC64] SA determines wrong unextendedSP |
JDK-8340684 | Reading from an input stream backed by a closed ZipFile has no test coverage |
JDK-8340785 | Update description of PassFailJFrame and samples |
JDK-8340799 | Add border inside instruction frame in PassFailJFrame |
JDK-8340804 | doc/building.md update Xcode instructions to note that full install is required |
JDK-8340812 | LambdaForm customization via MethodHandle::updateForm is not thread safe |
JDK-8340815 | Add SECURITY.md file |
JDK-8340824 | C2: Memory for TypeInterfaces not reclaimed by hashcons() |
JDK-8340899 | Remove wildcard bound in PositionWindows.positionTestWindows |
JDK-8340923 | The class LogSelection copies uninitialized memory |
JDK-8341024 | [test] build/AbsPathsInImage.java fails with OOM when using ubsan-enabled binaries |
JDK-8341057 | Add 2 SSL.com TLS roots |
JDK-8341059 | Change Entrust TLS distrust date to November 12, 2024 |
JDK-8341127 | Extra call to MethodHandle::asType from memory segment var handles fails to inline |
JDK-8341146 | RISC-V: Unnecessary fences used for load-acquire in template interpreter |
JDK-8341235 | Improve default instruction frame title in PassFailJFrame |
JDK-8341261 | Tests assume UnlockExperimentalVMOptions is disabled by default |
JDK-8341554 | Shenandoah: Missing heap lock when updating usage for soft ref policy |
JDK-8341562 | RISC-V: Generate comments in -XX:+PrintInterpreter to link to source code |
JDK-8341658 | RISC-V: Test DateFormatProviderTest.java run timeouted |
JDK-8341668 | Shenandoah: assert(tail_bits < (idx_t)BitsPerWord) failed: precondition |
JDK-8341688 | Aarch64: Generate comments in -XX:+PrintInterpreter to link to source code |
JDK-8341709 | Change milestone to ea for JDK23.0.2 |
JDK-8341806 | Gcc version detection failure on Alinux3 |
JDK-8341881 | [REDO] java/nio/file/attribute/BasicFileAttributeView/CreationTime.java#tmp fails on alinux3 |
JDK-8341966 | Broken annotated module may lead to an exception in javac |
JDK-8341997 | Tests create files in src tree instead of scratch dir |
JDK-8342014 | RISC-V: ZStoreBarrierStubC2 clobbers rflags |
JDK-8342114 | Change milestone to fcs for all releases |
JDK-8342145 | File libCreationTimeHelper.c compile fails on Alpine |
JDK-8342489 | compiler/c2/irTests/TestVectorizationMismatchedAccess.java fails on big-endian platforms |
JDK-8342496 | C2/Shenandoah: SEGV in compiled code when running jcstress |
JDK-8342612 | Increase memory usage of compiler/c2/TestScalarReplacementMaxLiveNodes.java |
JDK-8342681 | TestLoadBypassesNullCheck.java fails improperly specified VM option |
JDK-8342701 | [PPC64] TestOSRLotsOfLocals.java crashes |
JDK-8342905 | Thread.setContextClassloader from thread in FJP commonPool task no longer works after JDK-8327501 redux |
JDK-8342962 | [s390x] TestOSRLotsOfLocals.java crashes |
JFX issues
This is the list of JFX issues fixed in this release.
Issue ID | Summary |
---|---|
JDK-8333374 | Cannot invoke "com.sun.prism.RTTexture.contentsUseful()" because "this.txt" is null |
JDK-8335469 | [XWayland] crash when an AWT ScreenCast session overlaps with an FX ScreenCast session |
JDK-8335714 | Enhance playing MP3s |
JDK-8335715 | Improve Direct Show support |
JDK-8337827 | [XWayland] Skip failing tests on Wayland |
JDK-8339247 | Create release notes for JavaFX 23 |
JDK-8339848 | Change JavaFX release version to 23.0.2 in jfx23u |
JDK-8340208 | Additional WebKit 619.1 fixes from WebKitGTK 2.44.4 |
JDK-8340954 | Add SECURITY.md file |
JDK-8341686 | FX: Update copyright year in docs, readme files to 2025 |
JDK-8341911 | Create release notes for JavaFX 23.0.1 |
JDK-8341920 | Intermittent WebKit build failure on Windows generating PDB files in 619.1 |
JDK-8342917 | GHA: Intermittent build failure on Linux while downloading ant |
JDK-8343630 | Pass AccessControlContext to/from WebKit as opaque object |
JDK-8343760 | GHA: macOS / aarch64 builds depend on Xcode 14 which will be removed |
6. Updates to Third Party Libraries
This release does not contain any changes in the third party libraries.
7. Upgrading to the New Version
To keep your Liberica JDK up-to-date and secure, always upgrade to the newest available version once it is released. To upgrade, install the new version over the previous one. For the installation instructions, see Liberica JDK Installation Guide.