<i18n dev> RFR 8209184: JDK8 ResourceBundle vulnerable to GC (fix included)
mandy chung
mandy.chung at oracle.com
Tue Aug 14 15:24:36 UTC 2018
Hi Adam,
Have you tried Peter's suggestion if an empty static method taking an
Object parameter? Does it work for you?
Your proposed approach seems fine and I would suggest to put the
check in a static keepAlive method that will make it explicitly.
Mandy
On 8/10/18 8:42 AM, Adam Farley8 wrote:
> 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 i18n-dev
mailing list