[OpenJDK 2D-Dev] RFR: 8263138: Initialization of sun.font.SunFontManager.platformFontMap is not thread safe
github.com+741251+turbanoff at openjdk.java.net
Sun Mar 7 19:36:16 UTC 2021
On Sun, 28 Feb 2021 04:56:07 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:
>> In short, previously platformFontMap references were field set/gets and may be inconsistent due to concurrency. It is now moved to a local variable; also the map modifications have been moved to fields to avoid concurrency issues with hash map as far as I can see.
> One thread may create the local platformFontMap, then set the static SunFontManager.platformFontMap field, and then initialize the platformFontMap or mix these operations. The second thread may see non-null SunFontManager.platformFontMap which is not still initialized.
Made `volatile` to guarantee memory visibility if thread saw non-null value.
More information about the 2d-dev