<i18n dev> RFR: 8289220: [Shenandoah] TestAllocObjectArrays fails intermittently

Alan Bateman alanb at openjdk.org
Tue May 30 08:51:55 UTC 2023


On Tue, 30 May 2023 08:31:08 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             }

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


More information about the i18n-dev mailing list