RELEASE NOTES FOR: 8u102
====================================================================================================
Notes generated: Tue Oct 01 15:13:18 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:
deploy/webstart:
JDK-8055448: Set 32 or 64 bit JRE requirements in a JNLP file
Web Start applications can now specify requested JREs with their arch attributes, and select
the first one available that matches, even if it is not the same arch (32 bit vs 64 bit) as
the currently running JRE. For example, the JNLP content below would place first preference on
64 bit JDK8, and if not available, 32 bit JDK9: ``` ```
Note that in the above example, in order to launch a 64 bit 1.8 JRE, a 64 bit 9 JRE must be
installed. If only a 32 bit 9 JRE is installed, the 64 bit 1.8 JRE is unavailable.
JDK-8147627: 32/64-bit interoperability in Java Web Start
The ability to specify a preference to launch a Java Web Start application in 64-bit or 32-bit
architectures is now supported, by adding the 'arch' attribute to the JNLP resources block.
core-libs/java.lang.invoke:
JDK-8081512: Internal package sun.invoke.anon has been removed
The internal package sun.invoke.anon has been removed. The functionality it used to provide,
namely anonymous class loading with possible constant pool patches, is available via the
Unsafe.defineAnonymousClass() method.
core-libs/javax.naming:
JDK-8149450: Improved exception handling for bad LDAP referral replies
The JDK was throwing a NullPointerException when a non-compliant REFERRAL status result was
sent but no referral values were included. With this change, a NamingException with message
value of "Illegal encoding: referral is empty" will be thrown in such circumstances. See
JDK-8149450 and JDK-8154304 for more details
hotspot/compiler:
JDK-8144957: Removed PICL warning message
In 8u40, and 7u80, a new feature was introduced to use the PICL library on Solaris to get some
system information. If this library was not found, we printed an error message:
Java HotSpot(TM) Server VM warning: PICL (libpicl.so.1) is missing. Performance will not be
optimal.
This warning was misleading. Not finding the PICL library is a very minor issue, and the
warnings mostly lead to confusion. In this release, the warning was removed.
security-libs/javax.net.ssl:
JDK-8149017: Fix to resolve "Unable to process PreMasterSecret, may be too big" issue
Recent JDK updates introduced an issue for applications that depend on having a delayed
provider selection mechanism. The issue was introduced in JDK 8u71, JDK 7u95 and JDK 6u111.
The main error seen corresponded to an exception like the following : ``` handling exception:
javax.net.ssl.SSLProtocolException: Unable to process PreMasterSecret, may be too big ```
JDK-8049321: Support SHA224withDSA and SHA256withDSA in the SunJSSE provider
The SHA224withDSA and SHA256withDSA algorithms are now supported in the TLS 1.2
"signature_algorithms" extension in the SunJSSE provider. Note that this extension does not
apply to TLS 1.1 and previous versions.
core-svc:
JDK-8134300: .oracle_jre_usage folder no longer created in C:\Users\myName
Since JDK 1.8.0_60, a folder named .oracle_jre_usage gets created in the home directory. This
folder and the files inside it are created by the Java Runtime Environment to track the last
time a JRE was used. This information is very important in understanding what JRE
installations are currently being used on the system.
On Windows, this folder gets created under either `C:\Users\\AppData\Local or
C:\Users\myName\AppData\Roaming` depending upon whether the user is local, or is a network
user.
Writing content in this folder over the network on Windows can introduce performance overhead.
This problem has been fixed with bug JDK-8134300. With this fix .oracle_jre_usage folder gets
created under `%ProgramData%/Oracle/Java/`
core-libs/java.nio:
JDK-8147468: Ability to limit the capacity of buffers that can be held in the temporary buffer cache
The system property `jdk.nio.maxCachedBufferSize` has been introduced in to limit
the memory used by the "temporary buffer cache". The temporary buffer cache is a per-thread
cache of direct memory used by the NIO implementation to support applications that do I/O with
buffers backed by arrays in the java heap. The value of the property is the maximum capacity
of a direct buffer that can be cached. If the property is not set then no limit is put on the
size of buffers that are cached. Applications with certain patterns of I/O usage may benefit
from using this property. In particular if an application does I/O with large multi-megabyte
buffers at startup but therefore does I/O with small buffers may see a benefit to using this
property. Applications that do I/O using direct buffers will not see any benefit to using this
system property.
core-svc/javax.management:
JDK-6425769: New system property for the remote JMX connector
New JMX agent property - `jmxremote.host` A new property,
`com.sun.management.jmxremote.host`, is introduced that specifies the bind address for the
default JMX agent. If the latter is not specified, the default JMX agent will listen on all
interfaces (0.0.0.0) and the host value placed in the agent service URL (JMXServiceURL) is the
IP address returned from invocation of `InetAddress.getLocalHost()` method.
* Name: `com.sun.management.jmxremote.host` * Definition : Specifies the bind address for the
default JMX agent. It can be specified via the command line while starting the JVM or as part
of the agent config file (`management.properties`). * Value: IP address of any network
interface of the machine
hotspot/runtime:
JDK-8130425: New property jdk.lang.processReaperUseDefaultStackSize
When a large TLS (Thread local storage) size is set for Threads, the JVM results in a stack
overflow exception. The reason for this behavior is that the reaper thread was created with a
low stack size of 32768k. When a large TLS size is set, it steals space from the threads
stack, which eventually results in a stack overflow. This is a known glibc bug. To overcome
this issue, we have introduced a workaround (jdk.lang.processReaperUseDefaultStackSize) in
which the user can set the reaper threads stack size to a default instead of to 32768. This
gives the reaper thread a bigger stack size, so for a large TLS size, such as 32k, the process
will not fail. Users can set this flag in one of two ways: 1.
-Djdk.lang.processReaperUseDefaultStackSize=true 2.
System.setProperty("jdk.lang.processReaperUseDefaultStackSize", "true")
The problem has been observed only when JVM is started from JNI code in which TLS is declared
using "__thread"
security-libs/java.security:
JDK-8141540: Comodo Root CA removed
The Comodo "UTN - DATACorp SGC" root CA certificate has been removed from the cacerts file.
JDK-8072463: Modify requirements on Authority Key Identifier extension field during X509 certificate chain building
The requirement to have the Authority Key Identifier (AKID) and Subject Key Identifier (SKID)
fields matching when building X509 certificate chains has been modified for some cases.
hotspot/gc:
JDK-8150518: With UseG1GC, specifying -XX:ParallelGCThreads=0 is no longer allowed
With UseG1GC, specifying -XX:ParallelGCThreads=0 is no longer allowed. Previously, with
-XX:ParallelGCThreads=0, G1 would execute some tasks using serial code executed by the VM
thread. The closest approximation of this behavior is to specify -XX:ParallelGCThreads=1,
which causes parallel tasks to be executed by a single GC worker thread using parallel code.
JDK-8072725: Providing more granular levels for GC verification
This enhancement provides a way to specify more granular levels for the GC verification
enabled using the "VerifyBeforeGC", "VerifyAfterGC" and "VerifyDuringGC" diagnostic options.
It introduces a new diagnostic option VerifySubSet using which one can specify the subset of
the memory system that should be verified.
With this new option, one or more sub-systems can be specified in a comma separated string.
Valid memory sub-systems are: threads, heap, symbol_table, string_table, codecache,
dictionary, classloader_data_graph, metaspace, jni_handles, c-heap and codecache_oops.
During the GC verification, only the sub-systems specified using VerifySubSet get verified:
``` D:\tests>java -XX:+UnlockDiagnosticVMOptions -XX:+VerifyBeforeGC
-XX:VerifySubSet="threads,c-heap" -Xlog:gc+verify=debug Test [0.095s][debug ][gc,verify]
Threads [0.099s][debug ][gc,verify] C-heap [0.105s][info ][gc,verify] Verifying Before GC
(0.095s, 0.105s) 10.751ms [0.120s][debug ][gc,verify] Threads [0.124s][debug ][gc,verify]
C-heap [0.130s][info ][gc,verify] Verifying Before GC (0.120s, 0.130s) 9.951ms
[0.148s][debug ][gc,verify] Threads [0.152s][debug ][gc,verify] C-heap ``` If any invalid
memory sub-systems are specified with VerifySubSet, Java process exits with the following
error message: ``` D:\tests>java -XX:+UnlockDiagnosticVMOptions -XX:+VerifyBeforeGC
-XX:VerifySubSet="threads,c-heap,hello" -Xlog:gc+verify=debug oom Error occurred during
initialization of VM VerifySubSet: 'hello' memory sub-system is unknown, please correct it ```
ALL FIXED ISSUES, BY COMPONENT AND PRIORITY:
client-libs:
(P4) JDK-8140620: Find and load default.sf2 as the default soundbank on Linux
client-libs/2d:
(P3) JDK-8073400: Some Monospaced logical fonts have a different width
(P3) JDK-8076545: Text size is twice bigger under Windows L&F on Win 8.1 with HiDPI display
(P3) JDK-8146035: Windows - With LCD antialiasing, some glyphs are not rendered correctly
(P4) JDK-8154625: [Parfait] JNI exception pending in fontpath.c:1300
client-libs/java.awt:
(P2) JDK-8163583: [macosx] Press "To Back" button on the Dialog,the Dialog moves behind the Frame
(P2) JDK-8139581: AWT components are not drawn after removal and addition to a container
(P3) JDK-8148984: [macosx] Chinese Comma cannot be entered using Pinyin Input Method on OS X
(P3) JDK-8080729: [macosx] java 7 and 8 JDialogs on multiscreen jump to parent frame on focus
(P3) JDK-8130242: DataFlavorComparator transitivity exception
(P3) JDK-8151998: VS2010 ThemeReader.cpp(758) : error C3861: 'round': identifier not found
(P4) JDK-6961123: setWMClass fails to null-terminate WM_CLASS string
client-libs/javax.accessibility:
(P3) JDK-8145228: Java Access Bridge, getAccessibleStatesStringFromContext doesn't wrap the call to getAccessibleRole
client-libs/javax.swing:
(P2) JDK-8157838: Personalized Windows Font Size is not taken into account in Java8u102
(P4) JDK-8149453: [hidpi] JFileChooser does not scale properly on Windows with HiDPI display and Windows L&F
(P4) JDK-8149368: [hidpi] JLabel font is twice bigger than JTextArea font on Windows 7,HiDPI, Windows L&F
core-libs:
(P3) JDK-8081771: ProcessTool.createJavaProcessBuilder() needs new addTestVmAndJavaOptions argument
core-libs/java.lang:
(P3) JDK-8149330: Capacity of StringBuilder should not get close to Integer.MAX_VALUE unless necessary
(P4) JDK-8059677: Thread.getName() instantiates Strings
core-libs/java.lang.invoke:
(P4) JDK-8081512: Remove sun.invoke.anon classes, or move / co-locate them with tests
core-libs/java.net:
(P3) JDK-8071125: Improve exception messages in URLPermission
(P3) JDK-8135259: InetAddress.getAllByName only reports "unknown error" instead of actual cause
(P3) JDK-8159410: InetAddress.isReachable returns true for non existing IP addresses
(P3) JDK-8065078: NetworkInterface.getNetworkInterfaces() triggers intermittent test failures
(P4) JDK-8065076: java/net/SocketPermission/SocketPermissionTest.java fails intermittently
(P4) JDK-8145388: URLConnection.guessContentTypeFromStream returns image/jpg for some JPEG images
core-libs/java.nio:
(P4) JDK-8147468: (bf) Allow users to bound the size of buffers cached in the per-thread buffer caches
core-libs/java.rmi:
(P3) JDK-8046339: sun.rmi.transport.DGCAckHandler leaks memory
core-libs/java.text:
(P3) JDK-8151431: DateFormatSymbols triggers this.clone() in the constructor
core-libs/java.util:
(P4) JDK-8141243: Unexpected timezone returned after parsing a date
core-libs/java.util.concurrent:
(P3) JDK-8054446: Repeated offer and remove on ConcurrentLinkedQueue lead to an OutOfMemoryError
core-libs/java.util.jar:
(P3) JDK-8148627: RestrictTestMaxCachedBufferSize.java to 64-bit platforms
core-libs/java.util.logging:
(P3) JDK-8148820: Missing @since Javadoc tag in Logger.log(Level, Supplier)
core-libs/java.util:collections:
(P4) JDK-8068427: Hashtable deserialization reconstitutes table with wrong capacity
core-libs/javax.naming:
(P3) JDK-8141148: LDAP "follow" throws ClassCastException with Java 8
(P3) JDK-8149450: LdapCtx.processReturnCode() throwing Null Pointer Exception
(P3) JDK-8154304: NullpointerException at LdapReferralException.getReferralContext
core-libs/jdk.nashorn:
(P3) JDK-8149744: fix testng.jar delivery in Nashorn build.xml
(P3) JDK-8148379: jdk.nashorn.api.scripting spec. adjustments, clarifications
(P3) JDK-8149334: JSON.parse(JSON.stringify([])).push(10) creates an array containing two elements
(P4) JDK-8148926: Call site profiling fails on braces-wrapped anonymous function
core-svc:
(P2) JDK-8134300: .oracle_jre_usage folder must not be created in C:\Users\myName
core-svc/debugger:
(P4) JDK-4858370: JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command
(P4) JDK-4515292: ReferenceType.isStatic() returns true for arrays
core-svc/java.lang.management:
(P3) JDK-8145982: JMXInterfaceBindingTest is failing intermittently
(P3) JDK-8146015: JMXInterfaceBindingTest is failing intermittently for IPv6 addresses
core-svc/javax.management:
(P4) JDK-6425769: Allow specifying an address to bind JMX remote connector
deploy:
(P3) JDK-8133495: Platform.getInstalledJREList() returns only the jres of the current arch on windows.
deploy/webstart:
(P2) JDK-8149497: cannot relaunch to alternate architecture
(P3) JDK-8147627: 64 bit only app may have problems when initially launched with 32 bit javaws
(P3) JDK-8003984: Allow relaunch between 32 / 64 bit versions in Java Web Start when you have latest versions of both
(P3) JDK-8055448: Provide a way to specify JRE data model requirements in JNLP file
(P3) JDK-8131070: re enable secure launcher for cross platform launches.
(P3) JDK-6999748: Uninstaller Error occurs while trying to uninstall apps imported by 32 bit JWS on 64 bit systems
(P3) JDK-8153087: URL Scheme handler problem
hotspot/compiler:
(P1) JDK-8055530: assert(_exits.control()->is_top() || !_gvn.type(ret_phi)->empty()) failed: return value must be well defined
(P2) JDK-8141420: Compiler runtime entries don't hold Klass* from being GCed
(P2) JDK-8148752: MethodHandle inlining with long/double arguments is broken in C2
(P3) JDK-8147645: get_ctrl_no_update() code is wrong
(P3) JDK-8149543: range check CastII nodes should not be split through Phi
(P3) JDK-8144957: Remove PICL warning message
(P4) JDK-8141551: C2 can not handle returns with incompatible interface arrays
hotspot/gc:
(P1) JDK-8076995: gc/ergonomics/TestDynamicNumberOfGCThreads.java failed with java.lang.RuntimeException: 'new_active_workers' missing from stdout/stderr
(P2) JDK-8150518: G1 GC crashes at G1CollectedHeap::do_collection_pause_at_safepoint(double)
(P2) JDK-8133023: ParallelGCThreads is not calculated correctly
(P3) JDK-8154722: Test gc/ergonomics/TestDynamicNumberOfGCThreads.java fails
(P3) JDK-8152438: Threads may do significant work out of the non-shared overflow buffer
(P4) JDK-8150002: Check for the validity of oop before printing it in verify_remembered_set
(P4) JDK-8017462: G1: guarantee fails with UseDynamicNumberOfGCThreads
(P4) JDK-8072725: Provide more granular levels for GC verification
hotspot/jvmti:
(P3) JDK-8151064: com/sun/jdi/RedefineAddPrivateMethod.sh fails intermittently
(P3) JDK-8149743: JVM crash after debugger hotswap with lambdas
(P4) JDK-6976636: JVM/TI test ex03t001 fails assertion
hotspot/runtime:
(P3) JDK-8153641: assert(thread_state == _thread_in_native) failed: Assumed thread_in_native while heap dump
(P3) JDK-8130425: libjvm crash due to stack overflow in executables with 32k tbss/tdata
(P4) JDK-8153673: [BACKOUT] JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command
(P4) JDK-8139040: Fix initializations before ShouldNotReachHere() etc. and enable -Wuninitialized on linux.
(P4) JDK-8141445: Use of Solaris/SPARC M7 libadimalloc.so can generate unknown signal in hs_err file
hotspot/svc:
(P4) JDK-8129419: heapDumper.cpp: assert(length_in_bytes > 0) failed: nothing to copy
javafx/build:
(P2) JDK-8154803: Update license text in javadoc footer for FX API docs
(P4) JDK-8149547: checkrepo should suggest -a
(P4) JDK-8151865: JavaFX Gradle build script fails with Gradle 2.12
(P4) JDK-8150260: make checkrepo executable bit optional
javafx/controls:
(P2) JDK-8157398: [TreeTableView] graphic property of TreeItem is still visible after collapsing tree
(P3) JDK-8151756: JavaFX CSS is applied redundantly leading to significant performance degradation
(P3) JDK-8146325: Spinner throws a ClassCastException under Linux
(P4) JDK-8088397: [Dialog] ButtonType text not updated when Locale changes
(P4) JDK-8145567: Slider: snapToTicks not honoured on changing to true
javafx/media:
(P2) JDK-8150503: Provide media support for libav version 55 and 56
(P3) JDK-8130750: JFXMedia Player EventQueueThread does not always terminate
javafx/web:
(P3) JDK-8139317: [Mac] SecurityException when constructing WebView from JFXPanel application
(P3) JDK-8088916: Replace sun.net.www.ParseUtil#decode with public API
(P3) JDK-8088689: Several fast/regions/webkit-* tests fail
(P3) JDK-8133775: Some WebNode tests crash JVM
(P3) JDK-8154161: Webkit: Conversion from string literal loses const qualifier
(P4) JDK-8089842: JavaScript2Java Bridge: A char value cannot be set from JavaScript
other-libs/corba:
(P3) JDK-8144144: ORB destroy() leaks filedescriptors after unsuccessful connection
security-libs/java.security:
(P2) JDK-8141540: Remove "UTN - DATACorp SGC" Root CA Certificate
(P3) JDK-8149411: PKCS12KeyStore cannot extract AES Secret Keys
(P3) JDK-8072463: Remove requirement that AKID and SKID have to match when building certificate chain
security-libs/javax.crypto:
(P3) JDK-8149417: Use final restricted flag
(P4) JDK-8133535: Better exception messaging in Ucrypto code
security-libs/javax.net.ssl:
(P2) JDK-8149017: Delayed provider selection broken in RSA client key exchange.
(P2) JDK-8049321: Support SHA224withDSA and SHA256withDSA in the SunJSSE provider
(P3) JDK-8069253: javax/net/ssl/TLS/TestJSSE.java failed on Mac
(P4) JDK-8061464: A typo in CipherTestUtils test
(P4) JDK-8146192: Add test for JDK-8049321
(P4) JDK-8153531: Improve exception messaging for RSAClientKeyExchange
(P4) JDK-8158111: Make handling of 3rd party providers more stable
security-libs/javax.smartcardio:
(P3) JDK-8153438: Avoid repeated "Please insert a smart card" popup windows
security-libs/javax.xml.crypto:
(P3) JDK-8149029: Secure validation of XML based digital signature always enabled when checking wrapping attacks
tools/javac:
(P3) JDK-8130304: Inference: NodeNotFoundException thrown with deep generic method call chain
(P3) JDK-8066871: java.lang.VerifyError: Bad local variable type - local final String
(P3) JDK-8143647: Javac compiles method reference that allows results in an IllegalAccessError
xml/javax.xml.parsers:
(P3) JDK-8072081: Supplementary characters are rejected in comments
xml/jaxb:
(P3) JDK-8145039: JAXB marshaller fails with ClassCastException on classes generated by xjc
(P3) JDK-8073872: Schemagen fails with StackOverflowError if element references containing class
(P3) JDK-8134111: Unmarshaller unmarshalls XML element which doesn't have the expected namespace
xml/jaxp:
(P3) JDK-8149915: enabling validate-annotations feature for xsd schema with annotation causes NPE
(P3) JDK-8144593: Suppress not recognized property/feature warning messages from SAXParser
(P3) JDK-8150704: XALAN: ERROR: 'No more DTM IDs are available' when transforming with lots of temporary result trees
(P3) JDK-8145974: XMLStreamWriter produces invalid XML for surrogate pairs on OutputStreamWriter