RFR 8209184: JDK8 ResourceBundle vulnerable to GC (fix included)

Adam Farley8 adam.farley at uk.ibm.com
Fri Aug 10 15:42:00 UTC 2018


Hi All,

This bug could be fixed by comparing the Class Loader with a blank 
static volatile Object (defined outside the method scope) at the 
end of the getBundleImpl class.

E.g.

-----------------------------------------
+1322
    /**
     * volatile reference object to guard the ClassLoader object
     * being garbage collected before getBundleImpl() method completes
     * the caching and retrieving of requested Resourcebundle object
     */
    private static volatile Object vo = new Object();


+1400
//Should never be true. Using the loader here prevents it being GC'd.
            if (loader == vo) throw new Error("Unexpected error.");
-----------------------------------------

Will upload a webrev after debate.

- Adam
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU


More information about the core-libs-dev mailing list