The following sections summarize changes made in all Java SE 8u102 BPRs. Bug fixes and any other changes are listed below in date order, most current BPR first. Note that bug fixes in previous BPR are also included in the current BPR.
To determine the version of your JDK software, use the following command:
java -version
Bug Fixes
Bug Fixes
BugId | Component | Subcomponent | Summary |
---|---|---|---|
8153438 | security-libs | javax.smartcardio | Avoid repeated "Please insert a smart card" popup windows |
8164942 (Confidential) |
deploy | webstart | Avoid repeated "Please insert a smart card" popup windows - DEPLOY part |
Bug Fixes
BugId | Component | Subcomponent | Summary |
---|---|---|---|
8141148 | core-libs | javax.naming | LDAP "follow" throws ClassCastException with Java 8 |
8148984 | client-libs | java.awt | [macosx] Chinese Comma cannot be entered using Pinyin Input Method on OS X |
8158111 | security-libs | javax.net.ssl | Make handling of 3rd party providers more stable |
8080729 | client-libs | java.awt | [macosx] java 7 and 8 JDialogs on multiscreen jump to parent frame on focus |
8163583 | client-libs | java.awt | [macosx] Press "To Back" button on the Dialog,the Dialog moves behind the Frame |
Please note that fixes from the prior BPR (8u92 b34) are included in this version.
Bug Fixes
BugId | Component | Subcomponent | Summary |
---|---|---|---|
8154788 (Confidential) |
install | install | ENT MSI installers should support system account |
July 19, 2016
The full version string for this update release is 1.8.0_102-b14 (where "b" means "build"). The version number is 8u102.
JDK 8u102 contains IANA time zone data version 2016d. For more information, refer to Timezone Data Versions in the JRE Software.
See JDK-8151876
The security baselines for the Java Runtime Environment (JRE) at the time of the release of JDK 8u102 are specified in the following table:
JRE Family Version | JRE Security Baseline(Full Version String) |
---|---|
8 | 1.8.0_101-b13 |
7 | 1.7.0_111-b13 |
6 | 1.6.0_121-b09 |
The JRE expires whenever a new release with security vulnerability fixes becomes available. Critical patch updates, which contain security vulnerability fixes, are announced one year in advance on Critical Patch Updates, Security Alerts and Third Party Bulletin. This JRE (version 8u102) will expire with the release of the next critical patch update scheduled for October 19, 2016.
For systems unable to reach the Oracle Servers, a secondary mechanism expires this JRE (version 8u102) on November 19, 2016. After either condition is met (new release becoming available or expiration date reached), the JRE will provide additional warnings and reminders to users to update to the newer version. For more information, see JRE Expiration Date.
MSI Enterprise JRE Installer option, REMOVEOLDERJRES
MSI Enterprise JRE Installer option, REMOVEOLDERJRES, does not remove static installs. JDK-8161098 (not public)
security-libs/javax.net.ssl
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.
See JDK-8049321
core-libs/java.lang.invoke
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.
See JDK-8081512
hotspot/runtime
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:
-Djdk.lang.processReaperUseDefaultStackSize=true
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"
See JDK-8130425
hotspot/compiler
Implemented performance improvements for BigInteger.montgomeryMultiply
We have implemented improvements that will improve performance of several security algorithms, especially when using ciphers with key lengths of 2048-bit or greater. To turn on these improvements, use the options -XX:+UseMontgomeryMultiplyIntrinsic
and -XX:+UseMontgomerySquareIntrinsic
. This improvement is only for Linux and Solaris on x86_64 architecture.
See JDK-8130150
deploy/webstart
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.
See JDK-8147627
core-libs
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 8u102 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, an application that does I/O with large multi-megabyte buffers at startup but 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.
See JDK-8147468
core-svc/java.lang.management
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 the InetAddress.getLocalHost()
method.
com.sun.management.jmxremote.host
Specifies bind address for default JMX agent. It can be specified via command line while starting JVM or as part of agent config file (management.properties).
IP address of any network interface of the machine
See JDK-6425769
javafx/web
Fixed memory leak when Java objects are passed into JavaScript
The bug fix for JDK-8089861, which was first integrated in JDK 8u102, fixes a memory leak when Java objects are passed into JavaScript. Prior to JDK 8u102, the WebView JavaScript runtime held a strong reference to such bound objects, which prevented them from being garbage collected. After the fix for JDK-8089861, the WebView JavaScript runtime uses weak references to refer to bound Java objects. The specification was updated to make it clear that this is the intended behavior. Applications which rely on the previously unspecified behavior might be affected by the updated behavior if the application does not hold a strong reference to an object passed to JavaScript. In such case, the Java object might be garbage collected prematurely. The solution is to modify the application to hold a strong reference in Java code for objects that should remain live after being passed into JavaScript.
See JDK-8089681
security-libs/javax.net.ssl
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.
See JDK-8072463
hotspot/gc
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
with 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
, the 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
See JDK-8072725
hotspot/compiler
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.
See JDK-8144957
core-libs/javax.naming
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
client-libs
.oracle_jre_usage folder is no longer created in C\Users\myName
Since JDK 1.8.0_60, a folder named .oracle_jre_usage
is 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 was 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 JDK-8134300. With this fix, the .oracle_jre_usage
folder is created under %ProgramData%/Oracle/Java/.
See JDK-8134300
security-libs/javax.net.ssl
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
See JDK-8149017
hotspot/gc
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.
See JDK-8150518
This release also contains fixes for security vulnerabilities described in the Oracle Java SE Critical Patch Update Advisory.
BugId | Component | Subcomponent | Summary |
---|---|---|---|
JDK-8140620 | client-libs | Find and load default.sf2 as the default soundbank on Linux | |
JDK-8073400 | client-libs | 2d | Some Monospaced logical fonts have a different width |
JDK-8076545 | client-libs | 2d | Text size is twice bigger under Windows L&F on Win 8.1 with HiDPI display |
JDK-8146035 | client-libs | 2d | Windows - With LCD antialiasing, some glyphs are not rendered correctly |
JDK-6961123 | client-libs | java.awt | setWMClass fails to null-terminate WM_CLASS string |
JDK-8130242 | client-libs | java.awt | DataFlavorComparator transitivity exception |
JDK-8139581 | client-libs | java.awt | AWT components are not drawn after removal and addition to a container |
JDK-8151998 | client-libs | java.awt | VS2010 ThemeReader.cpp(758) : error C3861: 'round': identifier not found |
JDK-8145228 | client-libs | javax.accessibility | Java Access Bridge, getAccessibleStatesStringFromContext doesn't wrap the call to getAccessibleRole |
JDK-8130735 | client-libs | javax.swing | javax.swing.TimerQueue: timer fires late when another timer starts |
JDK-8147994 | client-libs | javax.swing | [macosx] JScrollPane jitters up/down during trackpad scrolling on MacOS/Aqua |
JDK-8149368 | client-libs | javax.swing | [hidpi] JLabel font is twice bigger than JTextArea font on Windows 7,HiDPI, Windows L&F |
JDK-8149453 | client-libs | javax.swing | [hidpi] JFileChooser does not scale properly on Windows with HiDPI display and Windows L&F |
JDK-8157838 | client-libs | javax.swing | Personalized Windows Font Size is not taken into account in Java8u102 |
JDK-8081771 | core-libs | ProcessTool.createJavaProcessBuilder() needs new addTestVmAndJavaOptions argument | |
JDK-8059677 | core-libs | java.lang | Thread.getName() instantiates Strings |
JDK-8149330 | core-libs | java.lang | Capacity of StringBuilder should not get close to Integer.MAX_VALUE unless necessary |
JDK-8081512 | core-libs | java.lang.invoke | Remove sun.invoke.anon classes, or move / co-locate them with tests |
JDK-8065078 | core-libs | java.net | NetworkInterface.getNetworkInterfaces() triggers intermittent test failures |
JDK-8071125 | core-libs | java.net | Improve exception messages in URLPermission |
JDK-8135259 | core-libs | java.net | InetAddress.getAllByName only reports "unknown error" instead of actual cause |
JDK-8145388 | core-libs | java.net | URLConnection.guessContentTypeFromStream returns image/jpg for some JPEG images |
JDK-8147468 | core-libs | java.nio | (bf) Allow users to bound the size of buffers cached in the per-thread buffer caches |
JDK-8046339 | core-libs | java.rmi | sun.rmi.transport.DGCAckHandler leaks memory |
JDK-8151431 | core-libs | java.text | DateFormatSymbols triggers this.clone() in the constructor |
JDK-8068427 | core-libs | java.util | Hashtable deserialization reconstitutes table with wrong capacity |
JDK-8141243 | core-libs | java.util | Unexpected timezone returned after parsing a date |
JDK-8054446 | core-libs | java.util.concurrent | Repeated offer and remove on ConcurrentLinkedQueue lead to an OutOfMemoryError |
JDK-8148820 | core-libs | java.util.logging | Missing @since Javadoc tag in Logger.log(Level, Supplier) |
JDK-8149450 | core-libs | javax.naming | LdapCtx.processReturnCode() throwing Null Pointer Exception |
JDK-8154304 | core-libs | javax.naming | NullpointerException at LdapReferralException.getReferralContext |
JDK-8148379 | core-libs | jdk.nashorn | jdk.nashorn.api.scripting spec. adjustments, clarifications |
JDK-8148926 | core-libs | jdk.nashorn | Call site profiling fails on braces-wrapped anonymous function |
JDK-8149334 | core-libs | jdk.nashorn | JSON.parse(JSON.stringify([])).push(10) creates an array containing two elements |
JDK-8134300 | core-svc | .oracle_jre_usage folder must not be created in C:\Users\myName | |
JDK-4515292 | core-svc | debugger | ReferenceType.isStatic() returns true for arrays |
JDK-4858370 | core-svc | debugger | JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command |
JDK-6425769 | core-svc | java.lang.management | Allow specifying an address to bind JMX remote connector |
JDK-8145982 | core-svc | java.lang.management | JMXInterfaceBindingTest is failing intermittently |
JDK-8146015 | core-svc | java.lang.management | JMXInterfaceBindingTest is failing intermittently for IPv6 addresses |
JDK-8133495 | deploy | Platform.getInstalledJREList() returns only the jres of the current arch on windows. | |
JDK-6999748 | deploy | webstart | Uninstaller Error occurs while trying to uninstall apps imported by 32 bit JWS on 64 bit systems |
JDK-8003984 | deploy | webstart | Allow relaunch between 32 / 64 bit versions in Java Web Start when you have latest versions of both |
JDK-8055448 | deploy | webstart | Provide a way to specify JRE data model requirements in JNLP file |
JDK-8131070 | deploy | webstart | re enable secure launcher for cross platform launches. |
JDK-8147627 | deploy | webstart | 64 bit only app may have problems when initially launched with 32 bit javaws |
JDK-8149497 | deploy | webstart | cannot relaunch to alternate architecture |
JDK-8153087 | deploy | webstart | URL Scheme handler problem |
JDK-6675699 | hotspot | compiler | need comprehensive fix for unconstrained ConvI2L with narrowed type |
JDK-8055530 | hotspot | compiler | assert(_exits.control()->is_top() || !_gvn.type(ret_phi)->empty()) failed: return value must be well defined |
JDK-8081778 | hotspot | compiler | Use Intel x64 CPU instructions for RSA acceleration |
JDK-8130150 | hotspot | compiler | Implement BigInteger.montgomeryMultiply intrinsic |
JDK-8141420 | hotspot | compiler | Compiler runtime entries don't hold Klass* from being GCed |
JDK-8141551 | hotspot | compiler | C2 can not handle returns with incompatible interface arrays |
JDK-8144957 | hotspot | compiler | Remove PICL warning message |
JDK-8147645 | hotspot | compiler | get_ctrl_no_update() code is wrong |
JDK-8148752 | hotspot | compiler | MethodHandle inlining with long/double arguments is broken in C2 |
JDK-8149543 | hotspot | compiler | range check CastII nodes should not be split through Phi |
JDK-8151522 | hotspot | compiler | Disable 8130150 and 8081778 intrinsics by default |
JDK-8017462 | hotspot | gc | G1: guarantee fails with UseDynamicNumberOfGCThreads |
JDK-8072725 | hotspot | gc | Provide more granular levels for GC verification |
JDK-8076995 | hotspot | gc | gc/ergonomics/TestDynamicNumberOfGCThreads.java failed with java.lang.RuntimeException: 'new_active_workers' missing from stdout/stderr |
JDK-8150002 | hotspot | gc | Check for the validity of oop before printing it in verify_remembered_set |
JDK-8150518 | hotspot | gc | G1 GC crashes at G1CollectedHeap::do_collection_pause_at_safepoint(double) |
JDK-8149743 | hotspot | jvmti | JVM crash after debugger hotswap with lambdas |
JDK-8130425 | hotspot | runtime | libjvm crash due to stack overflow in executables with 32k tbss/tdata |
JDK-8139040 | hotspot | runtime | Fix initializations before ShouldNotReachHere() etc. and enable -Wuninitialized on linux. |
JDK-8141445 | hotspot | runtime | Use of Solaris/SPARC M7 libadimalloc.so can generate unknown signal in hs_err file |
JDK-8153641 | hotspot | runtime | assert(thread_state == _thread_in_native) failed: Assumed thread_in_native while heap dump |
JDK-8153673 | hotspot | runtime | [BACKOUT] JDWP: Memory Leak: GlobalRefs never deleted when processing invokeMethod command |
JDK-8129419 | hotspot | svc | heapDumper.cpp: assert(length_in_bytes > 0) failed: nothing to copy |
JDK-8154022 | javafx | build | Upgrade production compilers on Windows to Visual Studio 2013 SP4 |
JDK-8154803 | javafx | build | Update license text in javadoc footer for FX API docs |
JDK-8088397 | javafx | controls | [Dialog] ButtonType text not updated when Locale changes |
JDK-8145567 | javafx | controls | Slider: snapToTicks not honoured on changing to true |
JDK-8146325 | javafx | controls | Spinner |
JDK-8151756 | javafx | controls | JavaFX CSS is applied redundantly leading to significant performance degradation |
JDK-8157398 | javafx | controls | [TreeTableView] graphic property of TreeItem is still visible after collapsing tree |
JDK-8130750 | javafx | media | JFXMedia Player EventQueueThread does not always terminate |
JDK-8150503 | javafx | media | Provide media support for libav version 55 and 56 |
JDK-8153534 | javafx | media | Intermittent hang in GSTMedia.gstDispose |
JDK-8154287 | javafx | media | Intermittent crash when disposing MediaPlayer |
JDK-8088689 | javafx | web | Several fast/regions/webkit-* tests fail |
JDK-8088916 | javafx | web | Replace sun.net.www.ParseUtil#decode with public API |
JDK-8089681 | javafx | web | WebView leaks memory when containing object acts as javascript callback handler |
JDK-8089842 | javafx | web | JavaScript2Java Bridge: A char value cannot be set from JavaScript |
JDK-8133775 | javafx | web | Some WebNode tests crash JVM |
JDK-8139114 | javafx | web | WebView crashes on Yahoo login page |
JDK-8139317 | javafx | web | [Mac] SecurityException when constructing WebView from JFXPanel application |
JDK-8147851 | javafx | web | jvm crash at javafx com.sun.webkit.WebPage.twkPrePaint |
JDK-8149537 | javafx | web | JavaFX WebView performance regression when inserting html via javascript |
JDK-8149737 | javafx | web | JRE crash in com.sun.webkit.network.URLLoader.twkDidFinishLoading |
JDK-8149768 | javafx | web | JavaFX Application Performance Issue |
JDK-8152737 | javafx | web | Crash in RuntimeObject::put when object passed to JSObject::setMember is GCed |
JDK-8153148 | javafx | web | Defer image decoding until WebCore requests ImageFrame |
JDK-8153151 | javafx | web | Call JavaScriptCore GC whenever JVM GC happens |
JDK-8153501 | javafx | web | Crash in ResourceLoader::releaseResources() |
JDK-8154186 | javafx | web | JVM crash while using JavaFW WebView and colgroup/cols html feature |
JDK-8144144 | other-libs | corba | ORB destroy() leaks filedescriptors after unsuccessful connection |
JDK-8038837 | security-libs | java.security | Add support to jarsigner for specifying timestamp hash algorithm |
JDK-8072463 | security-libs | java.security | Remove requirement that AKID and SKID have to match when building certificate chain |
JDK-8143913 | security-libs | java.security | MSCAPI keystore should accept Certificate[] in setEntry() |
JDK-8149411 | security-libs | java.security | PKCS12KeyStore cannot extract AES Secret Keys |
JDK-6483657 | security-libs | javax.crypto | MSCAPI provider does not create unique alias names |
JDK-8133535 | security-libs | javax.crypto | Better exception messaging in Ucrypto code |
JDK-8149417 | security-libs | javax.crypto | Use final restricted flag |
JDK-8049321 | security-libs | javax.net.ssl | Support SHA224withDSA and SHA256withDSA in the SunJSSE provider |
JDK-8149017 | security-libs | javax.net.ssl | Delayed provider selection broken in RSA client key exchange. |
JDK-8153531 | security-libs | javax.net.ssl | Improve exception messaging for RSAClientKeyExchange |
JDK-8149029 | security-libs | javax.xml.crypto | Secure validation of XML based digital signature always enabled when checking wrapping attacks |
JDK-8066871 | tools | javac | java.lang.VerifyError: Bad local variable type - local final String |
JDK-8130304 | tools | javac | Inference: NodeNotFoundException thrown with deep generic method call chain |
JDK-8143647 | tools | javac | Javac compiles method reference that allows results in an IllegalAccessError |
JDK-8072081 | xml | javax.xml.parsers | Supplementary characters are rejected in comments |
JDK-8144593 | xml | jaxp | Suppress not recognized property/feature warning messages from SAXParser |
JDK-8145974 | xml | jaxp | XMLStreamWriter produces invalid XML for surrogate pairs on OutputStreamWriter |
JDK-8149915 | xml | jaxp | enabling validate-annotations feature for xsd schema with annotation causes NPE |
JDK-8150704 | xml | jaxp | XALAN: ERROR: 'No more DTM IDs are available' when transforming with lots of temporary result trees |