Update to jdk-21.0.8+1 (EA)

- Update release notes to 21.0.8+1
- Bump freetype version to 2.13.3 following JDK-8348596
- Bump harfbuzz version to 10.4.0 following JDK-8348597
- Bump lcms2 version to 2.17.0 following JDK-8348110
- Bump libpng version to 1.6.47 following JDK-8348598
- Switch to EA mode
- Drop JDK-8351500 local patch which is now available in 21.0.8+1 upstream

Related: RHEL-101798
This commit is contained in:
Andrew Hughes 2025-07-08 21:38:41 +01:00
parent d114cc441d
commit 5dae33b1d6
5 changed files with 410 additions and 289 deletions

1
.gitignore vendored
View File

@ -34,3 +34,4 @@
/openjdk-21.0.7+4-ea.tar.xz /openjdk-21.0.7+4-ea.tar.xz
/openjdk-21.0.7+5-ea.tar.xz /openjdk-21.0.7+5-ea.tar.xz
/openjdk-21.0.7+6.tar.xz /openjdk-21.0.7+6.tar.xz
/openjdk-21.0.8+1-ea.tar.xz

387
NEWS
View File

@ -3,6 +3,393 @@ Key:
JDK-X - https://bugs.openjdk.java.net/browse/JDK-X JDK-X - https://bugs.openjdk.java.net/browse/JDK-X
CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY
New in release OpenJDK 21.0.8 (2025-07-15):
===========================================
Live versions of these release notes can be found at:
* https://bit.ly/openjdk2108
* Changes
- JDK-6956385: URLConnection.getLastModified() leaks file handles for jar:file and file: URLs
- JDK-8051591: Test javax/swing/JTabbedPane/8007563/Test8007563.java fails
- JDK-8136895: Writer not closed with disk full error, file resource leaked
- JDK-8180450: secondary_super_cache does not scale well
- JDK-8200566: DistributionPointFetcher fails to fetch CRLs if the DistributionPoints field contains more than one DistributionPoint and the first one fails
- JDK-8211400: nsk.share.gc.Memory::getArrayLength returns wrong value
- JDK-8220213: com/sun/jndi/dns/ConfigTests/Timeout.java failed intermittent
- JDK-8253440: serviceability/sa/TestJhsdbJstackLineNumbers.java failed with "Didn't find enough line numbers"
- JDK-8256211: assert fired in java/net/httpclient/DependentPromiseActionsTest (infrequent)
- JDK-8258483: [TESTBUG] gtest CollectorPolicy.young_scaled_initial_ergo_vm fails if heap is too small
- JDK-8270269: Desktop.browse method fails if earlier CoInitialize call as COINIT_MULTITHREADED
- JDK-8276995: Bug in jdk.jfr.event.gc.collection.TestSystemGC
- JDK-8279016: JFR Leak Profiler is broken with Shenandoah
- JDK-8280991: [XWayland] No displayChanged event after setDisplayMode call
- JDK-8281511: java/net/ipv6tests/UdpTest.java fails with checkTime failed
- JDK-8282726: java/net/vthread/BlockingSocketOps.java timeout/hang intermittently on Windows
- JDK-8286204: [Accessibility,macOS,VoiceOver] VoiceOver reads the spinner value 10 as 1 when user iterates to 10 for the first time on macOS
- JDK-8286875: ProgrammableUpcallHandler::on_entry/on_exit access thread fields from native
- JDK-8294155: Exception thrown before awaitAndCheck hangs PassFailJFrame
- JDK-8295804: javax/swing/JFileChooser/JFileChooserSetLocationTest.java failed with "setLocation() is not working properly"
- JDK-8303770: Remove Baltimore root certificate expiring in May 2025
- JDK-8305010: Test vmTestbase/nsk/jvmti/scenarios/sampling/SP05/sp05t003/TestDescription.java timed out: thread not suspended
- JDK-8307318: Test serviceability/sa/ClhsdbCDSJstackPrintAll.java failed: ArrayIndexOutOfBoundsException
- JDK-8308966: Add intrinsic for float/double modulo for x86 AVX2 and AVX512
- JDK-8309667: TLS handshake fails because of ConcurrentModificationException in PKCS12KeyStore.engineGetEntry
- JDK-8309841: Jarsigner should print a warning if an entry is removed
- JDK-8309978: [x64] Fix useless padding
- JDK-8312475: org.jline.util.PumpReader signed byte problem
- JDK-8314056: Remove runtime platform check from frem/drem
- JDK-8314136: Test java/net/httpclient/CancelRequestTest.java failed: WARNING: tracker for HttpClientImpl(42) has outstanding operations
- JDK-8314236: Overflow in Collections.rotate
- JDK-8314840: 3 gc/epsilon tests ignore external vm options
- JDK-8314842: zgc/genzgc tests ignore vm flags
- JDK-8315484: java/awt/dnd/RejectDragDropActionTest.java timed out
- JDK-8315669: Open source several Swing PopupMenu related tests
- JDK-8315742: Open source several Swing Scroll related tests
- JDK-8315871: Opensource five more Swing regression tests
- JDK-8315876: Open source several Swing CSS related tests
- JDK-8315951: Open source several Swing HTMLEditorKit related tests
- JDK-8315981: Opensource five more random Swing tests
- JDK-8316061: Open source several Swing RootPane and Slider related tests
- JDK-8316324: Opensource five miscellaneous Swing tests
- JDK-8316388: Opensource five Swing component related regression tests
- JDK-8316452: java/lang/instrument/modules/AppendToClassPathModuleTest.java ignores VM flags
- JDK-8316497: ColorConvertOp - typo for non-ICC conversions needs one-line fix
- JDK-8316580: HttpClient with StructuredTaskScope does not close when a task fails
- JDK-8318636: Add jcmd to print annotated process memory map
- JDK-8318700: MacOS Zero cannot run gtests due to wrong JVM path
- JDK-8318915: Enhance checks in BigDecimal.toPlainString()
- JDK-8319439: Move BufferNode from PtrQueue files to new files
- JDK-8319572: Test jdk/incubator/vector/LoadJsvmlTest.java ignores VM flags
- JDK-8319690: [AArch64] C2 compilation hits offset_ok_for_immed: assert "c2 compiler bug"
- JDK-8320687: sun.jvmstat.monitor.MonitoredHost.getMonitoredHost() throws unexpected exceptions when invoked concurrently
- JDK-8321204: C2: assert(false) failed: node should be in igvn hash table
- JDK-8321479: java -D-D crashes
- JDK-8321931: memory_swap_current_in_bytes reports 0 as "unlimited"
- JDK-8322141: SequenceInputStream.transferTo should not return as soon as Long.MAX_VALUE bytes have been transferred
- JDK-8322475: Extend printing for System.map
- JDK-8323795: jcmd Compiler.codecache should print total size of code cache
- JDK-8324678: Replace NULL with nullptr in HotSpot gtests
- JDK-8325435: [macos] Menu or JPopupMenu not closed when main window is resized
- JDK-8325680: Uninitialised memory in deleteGSSCB of GSSLibStub.c:179
- JDK-8326586: Improve Speed of System.map
- JDK-8327071: [Testbug] g-tests for cgroup leave files in /tmp on linux
- JDK-8327169: serviceability/dcmd/vm/SystemMapTest.java and SystemDumpMapTest.java may fail after JDK-8326586
- JDK-8327370: (ch) sun.nio.ch.Poller.register throws AssertionError
- JDK-8327461: KeyStore getEntry is not thread-safe
- JDK-8328107: Shenandoah/C2: TestVerifyLoopOptimizations test failure
- JDK-8328301: Convert Applet test ManualHTMLDataFlavorTest.java to main program
- JDK-8328482: Convert and Open source few manual applet test to main based
- JDK-8328484: Convert and Opensource few JFileChooser applet test to main
- JDK-8328648: Remove applet usage from JFileChooser tests bug4150029
- JDK-8328670: Automate and open source few closed manual applet test
- JDK-8328864: NullPointerException in sun.security.jca.ProviderList.getService()
- JDK-8329261: G1: interpreter post-barrier x86 code asserts index size of wrong buffer
- JDK-8329729: java/util/Properties/StoreReproducibilityTest.java times out
- JDK-8330106: C2: VectorInsertNode::make() shouldn't call ConINode::make() directly
- JDK-8330158: C2: Loop strip mining uses ABS with min int
- JDK-8330598: java/net/httpclient/Http1ChunkedTest.java fails with java.util.MissingFormatArgumentException: Format specifier '%s'
- JDK-8330936: [ubsan] exclude function BilinearInterp and ShapeSINextSpan in libawt java2d from ubsan checks
- JDK-8331088: Incorrect TraceLoopPredicate output
- JDK-8331735: UpcallLinker::on_exit races with GC when copying frame anchor
- JDK-8332506: SIGFPE In ObjectSynchronizer::is_async_deflation_needed()
- JDK-8332641: Update nsk.share.jpda.Jdb to don't use finalization
- JDK-8332880: JFR GCHelper class recognizes "Archive" regions as valid
- JDK-8333805: Replaying compilation with null static final fields results in a crash
- JDK-8333890: Fatal error in auto-vectorizer with float16 kernel.
- JDK-8334644: Automate javax/print/attribute/PageRangesException.java
- JDK-8334780: Crash: assert(h_array_list.not_null()) failed: invariant
- JDK-8334895: OpenJDK fails to configure on linux aarch64 when CDS is disabled after JDK-8331942
- JDK-8335181: Incorrect handling of HTTP/2 GOAWAY frames in HttpClient
- JDK-8335643: serviceability/dcmd/vm tests fail for ZGC after JDK-8322475
- JDK-8335662: [AArch64] C1: guarantee(val < (1ULL << nbits)) failed: Field too big for insn
- JDK-8335684: Test ThreadCpuTime.java should pause like ThreadCpuTimeArray.java
- JDK-8335710: serviceability/dcmd/vm/SystemDumpMapTest.java and SystemMapTest.java fail on Linux Alpine after 8322475
- JDK-8335860: compiler/vectorization/TestFloat16VectorConvChain.java fails with non-standard AVX/SSE settings
- JDK-8336042: Caller/callee param size mismatch in deoptimization causes crash
- JDK-8336499: Failure when creating non-CRT RSA private keys in SunPKCS11
- JDK-8336827: compiler/vectorization/TestFloat16VectorConvChain.java timeouts on ppc64 platforms after JDK-8335860
- JDK-8337221: CompileFramework: test library to conveniently compile java and jasm sources for fuzzing
- JDK-8337299: vmTestbase/nsk/jdb/stop_at/stop_at002/stop_at002.java failure goes undetected
- JDK-8337681: PNGImageWriter uses much more memory than necessary
- JDK-8337795: Type annotation attached to incorrect type during class reading
- JDK-8337958: Out-of-bounds array access in secondary_super_cache
- JDK-8337981: ShenandoahHeap::is_in should check for alive regions
- JDK-8337998: CompletionFailure in getEnclosingType attaching type annotations
- JDK-8338010: WB_IsFrameDeoptimized miss ResourceMark
- JDK-8338064: Give better error for ConcurrentHashTable corruption
- JDK-8338136: Hotspot should support multiple large page sizes on Windows
- JDK-8338202: Shenandoah: Improve handshake closure labels
- JDK-8338314: JFR: Split JFRCheckpoint VM operation
- JDK-8339148: Make os::Linux::active_processor_count() public
- JDK-8339288: Improve diagnostic logging runtime/cds/DeterministicDump.java
- JDK-8339300: CollectorPolicy.young_scaled_initial_ergo_vm gtest fails on ppc64 based platforms
- JDK-8339538: Wrong timeout computations in DnsClient
- JDK-8339639: Opensource few AWT PopupMenu tests
- JDK-8339678: Update runtime/condy tests to be executed with VM flags
- JDK-8339727: Open source several AWT focus tests - series 1
- JDK-8339794: Open source closed choice tests #1
- JDK-8339810: Clean up the code in sun.tools.jar.Main to properly close resources and use ZipFile during extract
- JDK-8339836: Open source several AWT Mouse tests - Batch 1
- JDK-8339842: Open source several AWT focus tests - series 2
- JDK-8339895: Open source several AWT focus tests - series 3
- JDK-8339906: Open source several AWT focus tests - series 4
- JDK-8339935: Open source several AWT focus tests - series 5
- JDK-8339982: Open source several AWT Mouse tests - Batch 2
- JDK-8339984: Open source AWT MenuItem related tests
- JDK-8339995: Open source several AWT focus tests - series 6
- JDK-8340024: In ClassReader, extract a constant for the superclass supertype_index
- JDK-8340077: Open source few Checkbox tests - Set2
- JDK-8340084: Open source AWT Frame related tests
- JDK-8340143: Open source several Java2D rendering loop tests.
- JDK-8340164: Open source few Component tests - Set1
- JDK-8340173: Open source some Component/Panel/EventQueue tests - Set2
- JDK-8340176: Replace usage of -noclassgc with -Xnoclassgc in test/jdk/java/lang/management/MemoryMXBean/LowMemoryTest2.java
- JDK-8340193: Open source several AWT Dialog tests - Batch 1
- JDK-8340228: Open source couple more miscellaneous AWT tests
- JDK-8340271: Open source several AWT Robot tests
- JDK-8340279: Open source several AWT Dialog tests - Batch 2
- JDK-8340332: Open source mixed AWT tests - Set3
- JDK-8340366: Open source several AWT Dialog tests - Batch 3
- JDK-8340367: Opensource few AWT image tests
- JDK-8340393: Open source closed choice tests #2
- JDK-8340417: Open source some MenuBar tests - Set1
- JDK-8340432: Open source some MenuBar tests - Set2
- JDK-8340433: Open source closed choice tests #3
- JDK-8340437: Open source few more AWT Frame related tests
- JDK-8340458: Open source additional Component tests (part 2)
- JDK-8340555: Open source DnD tests - Set4
- JDK-8340560: Open Source several AWT/2D font and rendering tests
- JDK-8340605: Open source several AWT PopupMenu tests
- JDK-8340621: Open source several AWT List tests
- JDK-8340625: Open source additional Component tests (part 3)
- JDK-8340639: Open source few more AWT List tests
- JDK-8340713: Open source DnD tests - Set5
- JDK-8340784: Remove PassFailJFrame constructor with screenshots
- JDK-8340790: Open source several AWT Dialog tests - Batch 4
- JDK-8340809: Open source few more AWT PopupMenu tests
- JDK-8340874: Open source some of the AWT Geometry/Button tests
- JDK-8340907: Open source closed frame tests # 2
- JDK-8340966: Open source few Checkbox and Cursor tests - Set1
- JDK-8340967: Open source few Cursor tests - Set2
- JDK-8340978: Open source few DnD tests - Set6
- JDK-8340985: Open source some Desktop related tests
- JDK-8341000: Open source some of the AWT Window tests
- JDK-8341004: Open source AWT FileDialog related tests
- JDK-8341072: Open source several AWT Canvas and Rectangle related tests
- JDK-8341128: open source some 2d graphics tests
- JDK-8341148: Open source several Choice related tests
- JDK-8341162: Open source some of the AWT window test
- JDK-8341170: Open source several Choice related tests (part 2)
- JDK-8341191: Open source few more AWT FileDialog tests
- JDK-8341239: Open source closed frame tests # 3
- JDK-8341257: Open source few DND tests - Set1
- JDK-8341258: Open source few various AWT tests - Set1
- JDK-8341278: Open source few TrayIcon tests - Set7
- JDK-8341298: Open source more AWT window tests
- JDK-8341373: Open source closed frame tests # 4
- JDK-8341378: Open source few TrayIcon tests - Set8
- JDK-8341447: Open source closed frame tests # 5
- JDK-8341535: sun/awt/font/TestDevTransform.java fails with RuntimeException: Different rendering
- JDK-8341637: java/net/Socket/UdpSocket.java fails with "java.net.BindException: Address already in use" (macos-aarch64)
- JDK-8341779: [REDO BACKPORT] type annotations are not visible to javac plugins across compilation boundaries (JDK-8225377)
- JDK-8341972: java/awt/dnd/DnDRemoveFocusOwnerCrashTest.java timed out after JDK-8341257
- JDK-8342075: HttpClient: improve HTTP/2 flow control checks
- JDK-8342376: More reliable OOM handling in ExceptionDuringDumpAtObjectsInitPhase test
- JDK-8342524: Use latch in AbstractButton/bug6298940.java instead of delay
- JDK-8342633: javax/management/security/HashedPasswordFileTest.java creates tmp file in src dir
- JDK-8342958: Use jvmArgs consistently in microbenchmarks
- JDK-8343019: Primitive caches must use boxed instances from the archive
- JDK-8343103: Enable debug logging for vmTestbase/nsk/jvmti/scenarios/sampling/SP05/sp05t003/TestDescription.java
- JDK-8343124: Tests fails with java.lang.IllegalAccessException: class com.sun.javatest.regtest.agent.MainWrapper$MainTask cannot access
- JDK-8343144: UpcallLinker::on_entry racingly clears pending exception with GC safepoints
- JDK-8343170: java/awt/Cursor/JPanelCursorTest/JPanelCursorTest.java does not show the default cursor
- JDK-8343224: print/Dialog/PaperSizeError.java fails with MediaSizeName is not A4: A4
- JDK-8343342: java/io/File/GetXSpace.java fails on Windows with CD-ROM drive
- JDK-8343345: Use -jvmArgsPrepend when running microbenchmarks in RunTests.gmk
- JDK-8343529: serviceability/sa/ClhsdbWhere.java fails AssertionFailure: Corrupted constant pool
- JDK-8343754: Problemlist jdk/jfr/event/oldobject/TestShenandoah.java after JDK-8279016
- JDK-8343855: HTTP/2 ConnectionWindowUpdateSender may miss some unprocessed DataFrames from closed streams
- JDK-8343891: Test javax/swing/JTabbedPane/TestJTabbedPaneBackgroundColor.java failed
- JDK-8343936: Adjust timeout in test javax/management/monitor/DerivedGaugeMonitorTest.java
- JDK-8344316: security/auth/callback/TextCallbackHandler/Password.java make runnable with JTReg and add the UI
- JDK-8344346: java/net/httpclient/ShutdownNow.java fails with java.lang.AssertionError: client was still running, but exited after further delay: timeout should be adjusted
- JDK-8344361: Restore null return for invalid services from legacy providers
- JDK-8344414: ZGC: Another division by zero in rule_major_allocation_rate
- JDK-8345133: Test sun/security/tools/jarsigner/TsacertOptionTest.java failed: Warning found in stdout
- JDK-8345134: Test sun/security/tools/jarsigner/ConciseJarsigner.java failed: unable to find valid certification path to requested target
- JDK-8345146: [PPC64] Make intrinsic conversions between bit representations of half precision values and floats
- JDK-8345341: Fix incorrect log message in JDI stop002t test
- JDK-8345357: test/jdk/javax/swing/JRadioButton/8033699/bug8033699.java fails in ubuntu22.04
- JDK-8345598: Upgrade NSS binaries for interop tests
- JDK-8345728: [Accessibility,macOS,Screen Magnifier]: JCheckbox unchecked state does not magnify but works for checked state
- JDK-8346049: jdk/test/lib/security/timestamp/TsaServer.java warnings
- JDK-8346082: Output JVMTI agent information in hserr files
- JDK-8346264: "Total compile time" counter should include time spent in failing/bailout compiles
- JDK-8346581: JRadioButton/ButtonGroupFocusTest.java fails in CI on Linux
- JDK-8346888: [ubsan] block.cpp:1617:30: runtime error: 9.97582e+36 is outside the range of representable values of type 'int'
- JDK-8347126: gc/stress/TestStressG1Uncommit.java gets OOM-killed
- JDK-8347173: java/net/DatagramSocket/InterruptibleDatagramSocket.java fails with virtual thread factory
- JDK-8347286: (fs) Remove some extensions from java/nio/file/Files/probeContentType/Basic.java
- JDK-8347373: HTTP/2 flow control checks may count unprocessed data twice
- JDK-8347506: Compatible OCSP readtimeout property with OCSP timeout
- JDK-8347596: Update HSS/LMS public key encoding
- JDK-8347629: Test FailOverDirectExecutionControlTest.java fails with -Xcomp
- JDK-8347995: Race condition in jdk/java/net/httpclient/offline/FixedResponseHttpClient.java
- JDK-8348107: test/jdk/java/net/httpclient/HttpsTunnelAuthTest.java fails intermittently
- JDK-8348110: Update LCMS to 2.17
- JDK-8348299: Update List/ItemEventTest/ItemEventTest.java
- JDK-8348323: Corrupted timezone string in JVM crash log
- JDK-8348596: Update FreeType to 2.13.3
- JDK-8348597: Update HarfBuzz to 10.4.0
- JDK-8348598: Update Libpng to 1.6.47
- JDK-8348600: Update PipeWire to 1.3.81
- JDK-8348936: [Accessibility,macOS,VoiceOver] VoiceOver doesn't announce untick on toggling the checkbox with "space" key on macOS
- JDK-8349200: [JMH] time.format.ZonedDateTimeFormatterBenchmark fails
- JDK-8349348: Refactor ClassLoaderDeadlock.sh and Deadlock.sh to run fully in java
- JDK-8349358: [JMH] Cannot access class jdk.internal.vm.ContinuationScope
- JDK-8349623: [ASAN] Gtest os_linux.glibc_mallinfo_wrapper_vm fails
- JDK-8349637: Integer.numberOfLeadingZeros outputs incorrectly in certain cases
- JDK-8349751: AIX build failure after upgrade pipewire to 1.3.81
- JDK-8350201: Out of bounds access on Linux aarch64 in os::print_register_info
- JDK-8350211: CTW: Attempt to preload all classes in constant pool
- JDK-8350224: Test javax/swing/JComboBox/TestComboBoxComponentRendering.java fails in ubuntu 23.x and later
- JDK-8350260: Improve HTML instruction formatting in PassFailJFrame
- JDK-8350313: Include timings for leaving safepoint in safepoint logging
- JDK-8350386: Test TestCodeCacheFull.java fails with option -XX:-UseCodeCacheFlushing
- JDK-8350412: [21u] AArch64: Ambiguous frame layout leads to incorrect traces in JFR
- JDK-8350483: AArch64: turn on signum intrinsics by default on Ampere CPUs
- JDK-8350546: Several java/net/InetAddress tests fails UnknownHostException
- JDK-8350616: Skip ValidateHazardPtrsClosure in non-debug builds
- JDK-8350650: Bump update version for OpenJDK: jdk-21.0.8
- JDK-8350682: [JMH] vector.IndexInRangeBenchmark failed with IndexOutOfBoundsException for size=1024
- JDK-8350786: Some java/lang jtreg tests miss requires vm.hasJFR
- JDK-8350924: javax/swing/JMenu/4213634/bug4213634.java fails
- JDK-8351086: (fc) Make java/nio/channels/FileChannel/BlockDeviceSize.java test manual
- JDK-8351500: G1: NUMA migrations cause crashes in region allocation
- JDK-8351665: Remove unused UseNUMA in os_aix.cpp
- JDK-8351933: Inaccurate masking of TC subfield decrement in ForkJoinPool
- JDK-8352076: [21u] Problem list tests that fail in 21 and would be fixed by 8309622
- JDK-8352109: java/awt/Desktop/MailTest.java fails in platforms where Action.MAIL is not supported
- JDK-8352302: Test sun/security/tools/jarsigner/TimestampCheck.java is failing
- JDK-8352512: TestVectorZeroCount: counter not reset between iterations
- JDK-8352706: httpclient HeadTest does not run on HTTP2
- JDK-8352716: (tz) Update Timezone Data to 2025b
- JDK-8353138: Screen capture for test TaskbarPositionTest.java, failure case
- JDK-8353709: Debug symbols bundle should contain full debug files when building --with-external-symbols-in-bundles=public
- JDK-8353787: Increased number of SHA-384-Digest java.util.jar.Attributes$Name instances leading to higher memory footprint
- JDK-8354893: [REDO BACKPORT] javac crashes while adding type annotations to the return type of a constructor (JDK-8320001)
Notes on individual issues:
===========================
tools/javac:
JDK-8341779: [REDO BACKPORT] type annotations are not visible to javac plugins across compilation boundaries (JDK-8225377)
==========================================================================================================================
The compiler in previous releases of OpenJDK 21 would only provide
access to type annotations on types loaded from source code files. If
the type was instead loaded from bytecode, then any type annotations
would be absent.
With this release, `TypeMirror` now provides access to annotations for
types loaded from bytecode. These type annotations can be obtained
using `AnnotationMirror#getAnnotationMirrors` and will be included in
the output of `AnnotationMirror#toString`.
Programs that rely on type annotations being absent from elements
loaded from bytecode will need to be updated accordingly. Due to
ongoing issues with this new feature (see JDK-8360406), it is not
enabled by default and the option `-XDaddTypeAnnotationsToSymbol=true`
must be specified in order for bytecode type annotations to be
included.
core-libs/java.net:
JDK-8342075: HttpClient: improve HTTP/2 flow control checks
===========================================================
This release of OpenJDK 21 enhances the HTTP/2 client implementation
in `java.net.http.HttpClient` to report flow control errors back to
the server. While this should be transparent in most cases, it may
lead to streams being reset or connections being closed if connecting
to a HTTP/2 server that does not correctly handle these errors.
Flow control limits can be adjusted using the following existing
properties:
* `jdk.httpclient.connectionWindowSize`
- Specifies the HTTP/2 client connection window size in bytes.
- Default value: `2^26`
- Range: `2^16-1` to `2^31-1`.
* `jdk.httpclient.windowSize`
- Specifies the HTTP/2 client stream window size in bytes.
- Default value: `16777216` (16MB)
- Range: `2^14` to `2^31-1`
Specifying an invalid value leads to the default value being used.
The implementation guarantees that the actual value used for the
connection window size will be no smaller than the stream window size.
hotspot/runtime:
JDK-8318636: Add jcmd to print annotated process memory map
===========================================================
Two new diagnostic commands have been added to `jcmd`, which print the
virtual memory map of the JVM either to standard output or a file. If
Native Memory Tracking (NMT) is enabled, NMT information about the
virtual memory segments will be included.
The new commands are:
* `jcmd <pid> System.map` -- prints the virtual memory map of the JVM
identified by `<pid>` to the standard output.
* `jcmd <pid> System.dump_map` -- prints the virtual memory map of the
JVM identified by `<pid>` to a file `vm_memory_map_<pid>.txt` in the
current directory.
security-libs/java.security:
JDK-8303770: Remove Baltimore root certificate expiring in May 2025
===================================================================
The following root certificate from Baltimore has been removed from
the `cacerts` keystore:
Alias Name: baltimorecybertrustca [jdk]
Distinguished Name: CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE
JDK-8347506: Compatible OCSP readtimeout property with OCSP timeout
===================================================================
The initial release of OpenJDK 21 introduced the
`com.sun.security.ocsp.readtimeout` property, which was paired with
the existing `com.sun.security.ocsp.timeout` to give greater control
over the timeouts for OCSP connections and certificate retrieval. The
existence of two separate properties allows the timeout for reading
data to be set separately from the timeout for the transport layer.
When `com.sun.security.ocsp.readtimeout` was backported to OpenJDK
17.0.15, the default value of `com.sun.security.ocsp.readtimeout` was
changed from 15 seconds to the value of
`com.sun.security.ocsp.timeout`, which itself has a default of 15
seconds. This change is brought forward to OpenJDK 21 with this
release.
If neither property is set, both will default to 15 seconds as in
previous OpenJDK 21 releases. If only `com.sun.security.ocsp.timeout`
is set, `com.sun.security.ocsp.readtimeout` will use the same value
which retains the behaviour from before the
`com.sun.security.ocsp.readtimeout` property was introduced.
JDK-8347596: Update HSS/LMS public key encoding
===============================================
The X.509 encoding format for HSS/LMS public keys has been updated to
align with the latest standard outlined in RFC 9708 [0]. Notably, the
OCTET_STRING wrapping around the public key value has been removed.
For compatibility, the JDK will still detect the presence of DER
encoding when reading keys encoded by earlier releases.
[0] https://www.rfc-editor.org/rfc/rfc9708.html#name-hss-lms-public-key-identifi
New in release OpenJDK 21.0.7 (2025-04-15): New in release OpenJDK 21.0.7 (2025-04-15):
=========================================== ===========================================
Live versions of these release notes can be found at: Live versions of these release notes can be found at:

View File

@ -308,7 +308,7 @@
# New Version-String scheme-style defines # New Version-String scheme-style defines
%global featurever 21 %global featurever 21
%global interimver 0 %global interimver 0
%global updatever 7 %global updatever 8
%global patchver 0 %global patchver 0
# We don't add any LTS designator for STS packages (Fedora and EPEL). # We don't add any LTS designator for STS packages (Fedora and EPEL).
# We need to explicitly exclude EPEL as it would have the %%{rhel} macro defined. # We need to explicitly exclude EPEL as it would have the %%{rhel} macro defined.
@ -365,10 +365,10 @@
%global origin_nice OpenJDK %global origin_nice OpenJDK
%global top_level_dir_name %{vcstag} %global top_level_dir_name %{vcstag}
%global top_level_dir_name_backup %{top_level_dir_name}-backup %global top_level_dir_name_backup %{top_level_dir_name}-backup
%global buildver 6 %global buildver 1
%global rpmrelease 2 %global rpmrelease 1
# Settings used by the portable build # Settings used by the portable build
%global portablerelease 2 %global portablerelease 1
# Portable suffix differs between RHEL and CentOS # Portable suffix differs between RHEL and CentOS
%if 0%{?centos} == 0 %if 0%{?centos} == 0
%global portablesuffix %{?pkgos:el7_9}%{!?pkgos:el8} %global portablesuffix %{?pkgos:el7_9}%{!?pkgos:el8}
@ -394,7 +394,7 @@
# Release will be (where N is usually a number starting at 1): # Release will be (where N is usually a number starting at 1):
# - 0.N%%{?extraver}%%{?dist} for EA releases, # - 0.N%%{?extraver}%%{?dist} for EA releases,
# - N%%{?extraver}{?dist} for GA releases # - N%%{?extraver}{?dist} for GA releases
%global is_ga 1 %global is_ga 0
%if %{is_ga} %if %{is_ga}
%global build_type GA %global build_type GA
%global ea_designator "" %global ea_designator ""
@ -1450,9 +1450,7 @@ Patch1001: fips-%{featurever}u-%{fipsver}.patch
# #
############################################# #############################################
# JDK-8351500: G1: NUMA migrations cause crashes in region allocation # Currently empty
# Upstream in 21.0.8+1
Patch2001: jdk8351500-numa_migration_crashes.patch
############################################# #############################################
# #
@ -1531,17 +1529,17 @@ BuildRequires: libpng-devel
BuildRequires: zlib-devel BuildRequires: zlib-devel
%else %else
# Version in src/java.desktop/share/legal/freetype.md # Version in src/java.desktop/share/legal/freetype.md
Provides: bundled(freetype) = 2.13.2 Provides: bundled(freetype) = 2.13.3
# Version in src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h # Version in src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h
Provides: bundled(giflib) = 5.2.2 Provides: bundled(giflib) = 5.2.2
# Version in src/java.desktop/share/native/libharfbuzz/hb-version.h # Version in src/java.desktop/share/native/libharfbuzz/hb-version.h
Provides: bundled(harfbuzz) = 8.2.2 Provides: bundled(harfbuzz) = 10.4.0
# Version in src/java.desktop/share/native/liblcms/lcms2.h # Version in src/java.desktop/share/native/liblcms/lcms2.h
Provides: bundled(lcms2) = 2.16.0 Provides: bundled(lcms2) = 2.17.0
# Version in src/java.desktop/share/native/libjavajpeg/jpeglib.h # Version in src/java.desktop/share/native/libjavajpeg/jpeglib.h
Provides: bundled(libjpeg) = 6b Provides: bundled(libjpeg) = 6b
# Version in src/java.desktop/share/native/libsplashscreen/libpng/png.h # Version in src/java.desktop/share/native/libsplashscreen/libpng/png.h
Provides: bundled(libpng) = 1.6.43 Provides: bundled(libpng) = 1.6.47
# Version in src/java.base/share/native/libzip/zlib/zlib.h # Version in src/java.base/share/native/libzip/zlib/zlib.h
Provides: bundled(zlib) = 1.3.1 Provides: bundled(zlib) = 1.3.1
%endif %endif
@ -1921,8 +1919,6 @@ sh %{SOURCE12} %{top_level_dir_name}
pushd %{top_level_dir_name} pushd %{top_level_dir_name}
# Add crypto policy and FIPS support # Add crypto policy and FIPS support
%patch -P1001 -p1 %patch -P1001 -p1
# Add early JDK-8351500
%patch -P2001 -p1
popd # openjdk popd # openjdk
@ -2567,6 +2563,17 @@ cjc.mainProgram(args)
%endif %endif
%changelog %changelog
* Wed Jul 09 2025 Andrew Hughes <gnu.andrew@redhat.com> - 1:21.0.8.0.1-0.1.ea
- Update to jdk-21.0.8+1 (EA)
- Update release notes to 21.0.8+1
- Bump freetype version to 2.13.3 following JDK-8348596
- Bump harfbuzz version to 10.4.0 following JDK-8348597
- Bump lcms2 version to 2.17.0 following JDK-8348110
- Bump libpng version to 1.6.47 following JDK-8348598
- Switch to EA mode
- Drop JDK-8351500 local patch which is now available in 21.0.8+1 upstream
- Related: RHEL-101798
* Thu May 08 2025 Andrew Hughes <gnu.andrew@redhat.com> - 1:21.0.7.0.6-2 * Thu May 08 2025 Andrew Hughes <gnu.andrew@redhat.com> - 1:21.0.7.0.6-2
- Add local version of JDK-8351500 for early interim release before 21.0.8 - Add local version of JDK-8351500 for early interim release before 21.0.8
- Sync the copy of the portable specfile with the latest update - Sync the copy of the portable specfile with the latest update

View File

@ -1,274 +0,0 @@
commit c5c0ac6140ec5241d949bc66f54469bfa516c60c
Author: Thomas Stuefe <stuefe@openjdk.org>
Date: Thu Mar 27 17:37:44 2025 +0000
8351500: G1: NUMA migrations cause crashes in region allocation
Reviewed-by: sjohanss
Backport-of: 37ec796255ae857588a5c7e0d572407dd81cbec9
diff --git a/src/hotspot/share/gc/g1/g1Allocator.cpp b/src/hotspot/share/gc/g1/g1Allocator.cpp
index 5b33e24de75..23c7ee839d8 100644
--- a/src/hotspot/share/gc/g1/g1Allocator.cpp
+++ b/src/hotspot/share/gc/g1/g1Allocator.cpp
@@ -212,10 +212,10 @@ size_t G1Allocator::used_in_alloc_regions() {
HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest,
- size_t word_size,
- uint node_index) {
+ uint node_index,
+ size_t word_size) {
size_t temp = 0;
- HeapWord* result = par_allocate_during_gc(dest, word_size, word_size, &temp, node_index);
+ HeapWord* result = par_allocate_during_gc(dest, node_index, word_size, word_size, &temp);
assert(result == nullptr || temp == word_size,
"Requested " SIZE_FORMAT " words, but got " SIZE_FORMAT " at " PTR_FORMAT,
word_size, temp, p2i(result));
@@ -223,13 +223,13 @@ HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest,
}
HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest,
+ uint node_index,
size_t min_word_size,
size_t desired_word_size,
- size_t* actual_word_size,
- uint node_index) {
+ size_t* actual_word_size) {
switch (dest.type()) {
case G1HeapRegionAttr::Young:
- return survivor_attempt_allocation(min_word_size, desired_word_size, actual_word_size, node_index);
+ return survivor_attempt_allocation(node_index, min_word_size, desired_word_size, actual_word_size);
case G1HeapRegionAttr::Old:
return old_attempt_allocation(min_word_size, desired_word_size, actual_word_size);
default:
@@ -238,10 +238,10 @@ HeapWord* G1Allocator::par_allocate_during_gc(G1HeapRegionAttr dest,
}
}
-HeapWord* G1Allocator::survivor_attempt_allocation(size_t min_word_size,
+HeapWord* G1Allocator::survivor_attempt_allocation(uint node_index,
+ size_t min_word_size,
size_t desired_word_size,
- size_t* actual_word_size,
- uint node_index) {
+ size_t* actual_word_size) {
assert(!_g1h->is_humongous(desired_word_size),
"we should not be seeing humongous-size allocations in this path");
@@ -396,10 +396,10 @@ HeapWord* G1PLABAllocator::allocate_direct_or_new_plab(G1HeapRegionAttr dest,
size_t actual_plab_size = 0;
HeapWord* buf = _allocator->par_allocate_during_gc(dest,
+ node_index,
required_in_plab,
plab_word_size,
- &actual_plab_size,
- node_index);
+ &actual_plab_size);
assert(buf == nullptr || ((actual_plab_size >= required_in_plab) && (actual_plab_size <= plab_word_size)),
"Requested at minimum %zu, desired %zu words, but got %zu at " PTR_FORMAT,
@@ -418,7 +418,7 @@ HeapWord* G1PLABAllocator::allocate_direct_or_new_plab(G1HeapRegionAttr dest,
*plab_refill_failed = true;
}
// Try direct allocation.
- HeapWord* result = _allocator->par_allocate_during_gc(dest, word_sz, node_index);
+ HeapWord* result = _allocator->par_allocate_during_gc(dest, node_index, word_sz);
if (result != nullptr) {
plab_data->_direct_allocated += word_sz;
plab_data->_num_direct_allocations++;
diff --git a/src/hotspot/share/gc/g1/g1Allocator.hpp b/src/hotspot/share/gc/g1/g1Allocator.hpp
index 32f37778a18..b2828d64d87 100644
--- a/src/hotspot/share/gc/g1/g1Allocator.hpp
+++ b/src/hotspot/share/gc/g1/g1Allocator.hpp
@@ -78,19 +78,16 @@ class G1Allocator : public CHeapObj<mtGC> {
inline OldGCAllocRegion* old_gc_alloc_region();
// Allocation attempt during GC for a survivor object / PLAB.
- HeapWord* survivor_attempt_allocation(size_t min_word_size,
+ HeapWord* survivor_attempt_allocation(uint node_index,
+ size_t min_word_size,
size_t desired_word_size,
- size_t* actual_word_size,
- uint node_index);
+ size_t* actual_word_size);
// Allocation attempt during GC for an old object / PLAB.
HeapWord* old_attempt_allocation(size_t min_word_size,
size_t desired_word_size,
size_t* actual_word_size);
- // Node index of current thread.
- inline uint current_node_index() const;
-
public:
G1Allocator(G1CollectedHeap* heap);
~G1Allocator();
@@ -110,18 +107,22 @@ class G1Allocator : public CHeapObj<mtGC> {
void abandon_gc_alloc_regions();
bool is_retained_old_region(HeapRegion* hr);
+ // Node index of current thread.
+ inline uint current_node_index() const;
+
// Allocate blocks of memory during mutator time.
// Attempt allocation in the current alloc region.
- inline HeapWord* attempt_allocation(size_t min_word_size,
+ inline HeapWord* attempt_allocation(uint node_index,
+ size_t min_word_size,
size_t desired_word_size,
size_t* actual_word_size);
// This is to be called when holding an appropriate lock. It first tries in the
// current allocation region, and then attempts an allocation using a new region.
- inline HeapWord* attempt_allocation_locked(size_t word_size);
+ inline HeapWord* attempt_allocation_locked(uint node_index, size_t word_size);
- inline HeapWord* attempt_allocation_force(size_t word_size);
+ inline HeapWord* attempt_allocation_force(uint node_index, size_t word_size);
size_t unsafe_max_tlab_alloc();
size_t used_in_alloc_regions();
@@ -131,14 +132,15 @@ class G1Allocator : public CHeapObj<mtGC> {
// heap, and then allocate a block of the given size. The block
// may not be a humongous - it must fit into a single heap region.
HeapWord* par_allocate_during_gc(G1HeapRegionAttr dest,
- size_t word_size,
- uint node_index);
+ uint node_index,
+ size_t word_size
+ );
HeapWord* par_allocate_during_gc(G1HeapRegionAttr dest,
+ uint node_index,
size_t min_word_size,
size_t desired_word_size,
- size_t* actual_word_size,
- uint node_index);
+ size_t* actual_word_size);
};
// Manages the PLABs used during garbage collection. Interface for allocation from PLABs.
diff --git a/src/hotspot/share/gc/g1/g1Allocator.inline.hpp b/src/hotspot/share/gc/g1/g1Allocator.inline.hpp
index 13ae9b9bbbd..7e516b48faa 100644
--- a/src/hotspot/share/gc/g1/g1Allocator.inline.hpp
+++ b/src/hotspot/share/gc/g1/g1Allocator.inline.hpp
@@ -49,11 +49,10 @@ inline OldGCAllocRegion* G1Allocator::old_gc_alloc_region() {
return &_old_gc_alloc_region;
}
-inline HeapWord* G1Allocator::attempt_allocation(size_t min_word_size,
+inline HeapWord* G1Allocator::attempt_allocation(uint node_index,
+ size_t min_word_size,
size_t desired_word_size,
size_t* actual_word_size) {
- uint node_index = current_node_index();
-
HeapWord* result = mutator_alloc_region(node_index)->attempt_retained_allocation(min_word_size, desired_word_size, actual_word_size);
if (result != nullptr) {
return result;
@@ -62,8 +61,7 @@ inline HeapWord* G1Allocator::attempt_allocation(size_t min_word_size,
return mutator_alloc_region(node_index)->attempt_allocation(min_word_size, desired_word_size, actual_word_size);
}
-inline HeapWord* G1Allocator::attempt_allocation_locked(size_t word_size) {
- uint node_index = current_node_index();
+inline HeapWord* G1Allocator::attempt_allocation_locked(uint node_index, size_t word_size) {
HeapWord* result = mutator_alloc_region(node_index)->attempt_allocation_locked(word_size);
assert(result != nullptr || mutator_alloc_region(node_index)->get() == nullptr,
@@ -71,8 +69,7 @@ inline HeapWord* G1Allocator::attempt_allocation_locked(size_t word_size) {
return result;
}
-inline HeapWord* G1Allocator::attempt_allocation_force(size_t word_size) {
- uint node_index = current_node_index();
+inline HeapWord* G1Allocator::attempt_allocation_force(uint node_index, size_t word_size) {
return mutator_alloc_region(node_index)->attempt_allocation_force(word_size);
}
diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
index 9b6b22a29e7..a43e45c4afa 100644
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
@@ -401,7 +401,7 @@ G1CollectedHeap::mem_allocate(size_t word_size,
return attempt_allocation(word_size, word_size, &dummy);
}
-HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) {
+HeapWord* G1CollectedHeap::attempt_allocation_slow(uint node_index, size_t word_size) {
ResourceMark rm; // For retrieving the thread names in log messages.
// Make sure you read the note in attempt_allocation_humongous().
@@ -427,7 +427,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) {
// Now that we have the lock, we first retry the allocation in case another
// thread changed the region while we were waiting to acquire the lock.
- result = _allocator->attempt_allocation_locked(word_size);
+ result = _allocator->attempt_allocation_locked(node_index, word_size);
if (result != nullptr) {
return result;
}
@@ -438,7 +438,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) {
if (GCLocker::is_active_and_needs_gc() && policy()->can_expand_young_list()) {
// No need for an ergo message here, can_expand_young_list() does this when
// it returns true.
- result = _allocator->attempt_allocation_force(word_size);
+ result = _allocator->attempt_allocation_force(node_index, word_size);
if (result != nullptr) {
return result;
}
@@ -495,7 +495,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_slow(size_t word_size) {
// follow-on attempt will be at the start of the next loop
// iteration (after taking the Heap_lock).
size_t dummy = 0;
- result = _allocator->attempt_allocation(word_size, word_size, &dummy);
+ result = _allocator->attempt_allocation(node_index, word_size, word_size, &dummy);
if (result != nullptr) {
return result;
}
@@ -636,11 +636,14 @@ inline HeapWord* G1CollectedHeap::attempt_allocation(size_t min_word_size,
assert(!is_humongous(desired_word_size), "attempt_allocation() should not "
"be called for humongous allocation requests");
- HeapWord* result = _allocator->attempt_allocation(min_word_size, desired_word_size, actual_word_size);
+ // Fix NUMA node association for the duration of this allocation
+ const uint node_index = _allocator->current_node_index();
+
+ HeapWord* result = _allocator->attempt_allocation(node_index, min_word_size, desired_word_size, actual_word_size);
if (result == nullptr) {
*actual_word_size = desired_word_size;
- result = attempt_allocation_slow(desired_word_size);
+ result = attempt_allocation_slow(node_index, desired_word_size);
}
assert_heap_not_locked();
@@ -778,8 +781,11 @@ HeapWord* G1CollectedHeap::attempt_allocation_at_safepoint(size_t word_size,
assert(!_allocator->has_mutator_alloc_region() || !expect_null_mutator_alloc_region,
"the current alloc region was unexpectedly found to be non-null");
+ // Fix NUMA node association for the duration of this allocation
+ const uint node_index = _allocator->current_node_index();
+
if (!is_humongous(word_size)) {
- return _allocator->attempt_allocation_locked(word_size);
+ return _allocator->attempt_allocation_locked(node_index, word_size);
} else {
HeapWord* result = humongous_obj_allocate(word_size);
if (result != nullptr && policy()->need_to_start_conc_mark("STW humongous allocation")) {
diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
index 88f4f680800..6afaeb6e6d4 100644
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
@@ -453,7 +453,7 @@ class G1CollectedHeap : public CollectedHeap {
// Second-level mutator allocation attempt: take the Heap_lock and
// retry the allocation attempt, potentially scheduling a GC
// pause. This should only be used for non-humongous allocations.
- HeapWord* attempt_allocation_slow(size_t word_size);
+ HeapWord* attempt_allocation_slow(uint node_index, size_t word_size);
// Takes the Heap_lock and attempts a humongous allocation. It can
// potentially schedule a GC pause.

View File

@ -1,2 +1,2 @@
SHA512 (tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz) = 97d026212363b3c83f6a04100ad7f6fdde833d16579717f8756e2b8c2eb70e144a41a330cb9ccde9c3badd37a2d54fdf4650a950ec21d8b686d545ecb2a64d30 SHA512 (tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz) = 97d026212363b3c83f6a04100ad7f6fdde833d16579717f8756e2b8c2eb70e144a41a330cb9ccde9c3badd37a2d54fdf4650a950ec21d8b686d545ecb2a64d30
SHA512 (openjdk-21.0.7+6.tar.xz) = 4ccbad22a7284fc8a38f78585dbc9e2b632c634f0a496d0f41bc5a0ec35ef1f2ca75b2aad135c299e9ebb04c8bd73b905f6c57ae041bd39d4474ecbda3656c97 SHA512 (openjdk-21.0.8+1-ea.tar.xz) = 52dec88fa4ddf746ef64d014e14b0a96b2fdd1b7ced650d735d5919a4e16c6fb6d69721c90a1791210539c1506cc523b562eda77ada52a45e370820fb0aea467