JDK-8209184 : JCK Test Failure due to ResourceBundle
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.util:i18n
  • Affected Version: 8u172
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2018-08-09
  • Updated: 2019-03-19
  • Resolved: 2018-08-21
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
8u202 b01Fixed
Inside the CacheKey object in the getBundleImpl method in the ResourceBundle class, we use a soft reference that can result in the ClassLoader object getting GC'd before we're done with it.

This can result in us getting the wrong result back, like if we asked for "Stuff" with the locale "fr, CA" and got back "Stuff_fr.class" instead of "Stuff_fr_CA.class".

-- Example Fix:
One fix proven to work is to create a static, volatile Object with global scope in ResourceBundle, and compare it ("==" style) to the loader right before it gets returned from getBundleImpl.

The result of the compare can be something direct like "throw new Error("Unexpected error.")", as this compare should never return true.

-- Only seen on...
This defect is only seen on JDK8, on ppcle and zLinux, and hasn't yet been seen using the Hotspot 
VM (defect found using OpenJ9 VM).

Due to a redesign of this class in JDK9, this bug is fixed in JDK9 and up.
Webrev uploaded here: http://cr.openjdk.java.net/~aleonard/8209184/webrev.00/

Since fix for issue is suggested by Adam farley from IBM and issue is seen only on IBM JVM, it would be better if Adam do the required changes. Therefore, removing my name from this JIRA ticket. Please refer http://mail.openjdk.java.net/pipermail/i18n-dev/2018-August/002619.html mail thread for detail information.