java

JDK 8u102 Release Notes

Java SE 8u102 Bundled Patch Release (BPR) - Bug Fixes and Updates

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

Changes in Java SE 8u102 b35

Bug Fixes

BugId Component Subcomponent Summary
8152438 hotspot gc Threads may do significant work out of the non-shared overflow buffer
8159410 core-libs java.net InetAddress.isReachable returns true for non existing IP addresses

Changes in Java SE 8u102 b34

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

Changes in Java SE 8u102 b33

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

Changes in Java SE 8u102 b31

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

Java™ SE Development Kit 8, Update 102 (JDK 8u102)

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.

IANA Data 2016d

JDK 8u102 contains IANA time zone data version 2016d. For more information, refer to Timezone Data Versions in the JRE Software.

See JDK-8151876

Security Baselines

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

JRE Expiration Date

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.

Notes

MSI Enterprise JRE Installer option, REMOVEOLDERJRES

MSI Enterprise JRE Installer option, REMOVEOLDERJRES, does not remove static installs. JDK-8161098 (not public)

Enhancements

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:

  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"

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

New Features

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.

  • Name:

    com.sun.management.jmxremote.host

  • Definition:

    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).

  • Value:

    IP address of any network interface of the machine

See JDK-6425769

Changes

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

Bug Fixes

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

 

Bug Fix List

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 throws a ClassCastException under Linux
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