On Tue, 30 May 2023 08:31:08 GMT, SUN Guoyun <d...@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             }

I think Locale.forLanguageTag is specified to return null so you might have to 
do a bit more analysis to see what this issue is about. There are soft refs 
usages in the locale and it could be that there is some that doesn't handle 
cases where the ref is cleared.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/14211#issuecomment-1568027455

Reply via email to