RFR: 8289220: Locale.forLanguageTag throws NPE due to soft ref used in locale cache being cleared [v6]
Alan Bateman
alanb at openjdk.org
Wed Jun 7 12:46:07 UTC 2023
On Wed, 7 Jun 2023 03:37:26 GMT, SUN Guoyun <duke at openjdk.org> wrote:
>> command: make test CONF=fastdebug JTREG="VM_OPTIONS=-Xcomp" TEST=gc/TestAllocHumongousFragment.java
>> error info:
>>
>> Caused by: java.lang.NullPointerException: Cannot invoke "sun.util.locale.BaseLocale.getVariant()" because "base" is null
>> at java.base/java.util.Locale.forLanguageTag(Locale.java:1802)
>> at java.base/sun.util.cldr.CLDRBaseLocaleDataMetaInfo.<clinit>(CLDRBaseLocaleDataMetaInfo.java:41)
>> ... 24 more
>>
>> Note that the test runs with -XX:ShenandoahGCHeuristics=aggressive -XX:+ShenandoahOOMDuringEvacALot and SoftReferences are involved (LocaleObjectCache uses SoftReferences, used by printf method called in getRandomInstance(Utils.java:511)).
>>
>> Maybe we have to deal with the case where the getBaseLocale() return value is null. the call stack is:
>>
>> at java.base/sun.util.locale.LocaleObjectCache.get(LocaleObjectCache.java:64)
>> at java.base/sun.util.locale.BaseLocale.getInstance(BaseLocale.java:169)
>> at java.base/sun.util.locale.InternalLocaleBuilder.getBaseLocale(InternalLocaleBuilder.java:524)
>> at java.base/java.util.Locale.forLanguageTag(Locale.java:1874)
>>
>> in LocaleObjectCache.java:64
>>
>> 62 if (key == null || newVal == null) {
>> 63 // subclass must return non-null key/value object
>> 64 return null; // run here
>> 65 }
>
> SUN Guoyun has updated the pull request incrementally with one additional commit since the last revision:
>
> 8289220: Locale.forLanguageTag throws NPE due to soft ref used in locale cache being cleared
src/java.base/share/classes/sun/util/locale/LocaleObjectCache.java line 63:
> 61: if (newVal == null) {
> 62: // subclass must return non-null key/value object
> 63: throw new NullPointerException();
Is this caught somewhere, it seem strange to throw NPE here.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14211#discussion_r1221526553
More information about the core-libs-dev
mailing list