On Thu, 21 Mar 2024 20:38:22 GMT, Weijun Wang <wei...@openjdk.org> wrote:

>> Sean Coffey has updated the pull request with a new target base due to a 
>> merge or a rebase. The incremental webrev excludes the unrelated changes 
>> brought in by the merge/rebase. The pull request contains 12 additional 
>> commits since the last revision:
>> 
>>  - merge in krb5 debug changes and implement extra functionality. enhance 
>> krb5 test
>>  - krb5 debug merge
>>  - Merge branch 'master' into 8051959-tracing
>>  - Move help section higher. Add code comment
>>  - more test coverage
>>  - unused variable
>>  - use default hex output
>>  - static dateTimeFormatInitialized
>>  - Merge branch 'master' into 8051959-tracing
>>  - Holder class idiom
>>  - ... and 2 more: https://git.openjdk.org/jdk/compare/892daf98...5628bc22
>
> src/java.base/share/classes/sun/security/util/Debug.java line 191:
> 
>> 189:         if (printDateTime && !dateTimeFormatInitialized) {
>> 190:             // trigger loading of Locale service impl now to avoid
>> 191:             // possible bootstrap recursive class load issue
> 
> Does this need to be manually loaded? I thought the `FormatHolder` field will 
> be automatically loaded when it's first accessed and only once.

It's still necessary I'm afraid. During an early classloader operation, the 
Security class can be triggered which causes security properties to be read. If 
debugging is enabled, this triggers loading of CLDR service. Quite a long stack 
trace but I'll paste it here for history.

I agree on your other comments - I'll try a clean up and will come back to you 
then.


 stderr: [Error: A JNI error has occurred, please check your installation and 
try again
Exception in thread "main" java.util.ServiceConfigurationError: Locale provider 
adapter "CLDR"cannot be instantiated.
        at 
java.base/sun.util.locale.provider.LocaleProviderAdapter.forType(LocaleProviderAdapter.java:193)
        at 
java.base/sun.util.locale.provider.LocaleServiceProviderPool.findProviders(LocaleServiceProviderPool.java:311)
        at 
java.base/sun.util.locale.provider.LocaleServiceProviderPool.getLocalizedObjectImpl(LocaleServiceProviderPool.java:283)
        at 
java.base/sun.util.locale.provider.LocaleServiceProviderPool.getLocalizedObject(LocaleServiceProviderPool.java:245)
        at 
java.base/sun.util.locale.provider.TimeZoneNameUtility.retrieveDisplayNamesImpl(TimeZoneNameUtility.java:197)
        at 
java.base/sun.util.locale.provider.TimeZoneNameUtility.retrieveDisplayNames(TimeZoneNameUtility.java:120)
        at 
java.base/java.time.format.DateTimeFormatterBuilder$ZoneTextPrinterParser.getDisplayName(DateTimeFormatterBuilder.java:4484)
        at 
java.base/java.time.format.DateTimeFormatterBuilder$ZoneTextPrinterParser.format(DateTimeFormatterBuilder.java:4535)
        at 
java.base/java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2537)
        at 
java.base/java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1905)
        at 
java.base/java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1879)
        at java.base/sun.security.util.Debug.extraInfo(Debug.java:345)
        at java.base/sun.security.util.Debug.println(Debug.java:299)
        at java.base/java.security.Security.loadProps(Security.java:161)
        at java.base/java.security.Security.initialize(Security.java:103)
        at java.base/java.security.Security.lambda$static$0(Security.java:84)
        at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
        at java.base/java.security.Security.<clinit>(Security.java:83)
        at 
java.base/sun.security.util.SecurityProperties.getOverridableProperty(SecurityProperties.java:57)
        at 
java.base/sun.security.util.SecurityProperties.privilegedGetOverridable(SecurityProperties.java:48)
        at 
java.base/sun.security.util.SecurityProperties.includedInExceptions(SecurityProperties.java:72)
        at 
java.base/sun.security.util.SecurityProperties.<clinit>(SecurityProperties.java:36)
        at 
java.base/sun.security.util.FilePermCompat.<clinit>(FilePermCompat.java:43)
        at java.base/java.io.FilePermission.init(FilePermission.java:319)
        at java.base/java.io.FilePermission.<init>(FilePermission.java:490)
        at 
java.base/sun.net.www.protocol.file.FileURLConnection.getPermission(FileURLConnection.java:223)
        at 
java.base/sun.security.util.LazyCodeSourcePermissionCollection.ensureAdded(LazyCodeSourcePermissionCollection.java:69)
        at 
java.base/sun.security.util.LazyCodeSourcePermissionCollection.toString(LazyCodeSourcePermissionCollection.java:115)
        at java.base/java.lang.String.valueOf(String.java:4509)
        at java.base/java.lang.StringBuilder.append(StringBuilder.java:173)
        at 
java.base/java.security.ProtectionDomain.toString(ProtectionDomain.java:434)
        at java.base/java.lang.String.valueOf(String.java:4509)
        at java.base/java.lang.StringBuilder.append(StringBuilder.java:173)
        at 
java.base/java.security.SecureClassLoader$1.apply(SecureClassLoader.java:231)
        at 
java.base/java.security.SecureClassLoader$1.apply(SecureClassLoader.java:222)
        at 
java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1713)
        at 
java.base/java.security.SecureClassLoader.getProtectionDomain(SecureClassLoader.java:222)
        at 
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
        at 
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:528)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:578)
        at java.base/java.lang.Class.forName(Class.java:557)
        at 
java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:847)
        at 
java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:732)
Caused by: java.lang.reflect.InvocationTargetException
        at 
java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74)
        at 
java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
        at 
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
        at 
java.base/sun.util.locale.provider.LocaleProviderAdapter.forType(LocaleProviderAdapter.java:182)
        ... 48 more
Caused by: java.util.ServiceConfigurationError: Locale provider adapter 
"CLDR"cannot be instantiated.
        at 
java.base/sun.util.locale.provider.LocaleProviderAdapter.forType(LocaleProviderAdapter.java:193)
        at 
java.base/sun.util.locale.provider.LocaleServiceProviderPool.findProviders(LocaleServiceProviderPool.java:311)
        at 
java.base/sun.util.locale.provider.LocaleServiceProviderPool.getLocalizedObjectImpl(LocaleServiceProviderPool.java:283)
        at 
java.base/sun.util.locale.provider.LocaleServiceProviderPool.getLocalizedObject(LocaleServiceProviderPool.java:245)
        at 
java.base/sun.util.locale.provider.TimeZoneNameUtility.retrieveDisplayNamesImpl(TimeZoneNameUtility.java:197)
        at 
java.base/sun.util.locale.provider.TimeZoneNameUtility.retrieveDisplayNames(TimeZoneNameUtility.java:120)
        at 
java.base/java.time.format.DateTimeFormatterBuilder$ZoneTextPrinterParser.getDisplayName(DateTimeFormatterBuilder.java:4484)
        at 
java.base/java.time.format.DateTimeFormatterBuilder$ZoneTextPrinterParser.format(DateTimeFormatterBuilder.java:4535)
        at 
java.base/java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2537)
        at 
java.base/java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1905)
        at 
java.base/java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1879)
        at java.base/sun.security.util.Debug.extraInfo(Debug.java:345)
        at java.base/sun.security.util.Debug.println(Debug.java:299)
        at 
java.base/java.security.SecureClassLoader$1.apply(SecureClassLoader.java:231)
        at 
java.base/java.security.SecureClassLoader$1.apply(SecureClassLoader.java:222)
        at 
java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1713)
        at 
java.base/java.security.SecureClassLoader.getProtectionDomain(SecureClassLoader.java:222)
        at 
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:182)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:741)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:621)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:640)
        at java.base/java.lang.Class.forName(Class.java:669)
        at java.base/java.lang.Class.forName(Class.java:644)
        at 
java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:855)
        at 
java.base/java.util.ServiceLoader$ModuleServicesLookupIterator.hasNext(ServiceLoader.java:1080)
        at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
        at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1391)
        at 
java.base/sun.util.cldr.CLDRLocaleProviderAdapter.lambda$new$0(CLDRLocaleProviderAdapter.java:84)
        at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:571)
        at 
java.base/sun.util.cldr.CLDRLocaleProviderAdapter.<init>(CLDRLocaleProviderAdapter.java:83)
        at 
java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
        ... 51 more
Caused by: java.lang.reflect.InvocationTargetException
        at 
java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74)
        at 
java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
        at 
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
        at 
java.base/sun.util.locale.provider.LocaleProviderAdapter.forType(LocaleProviderAdapter.java:182)
        ... 82 more
Caused by: java.lang.IllegalStateException: Recursive update
        at 
java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1768)
        at 
java.base/java.security.SecureClassLoader.getProtectionDomain(SecureClassLoader.java:222)
        at 
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:182)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:741)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.findClass(BuiltinClassLoader.java:621)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:640)
        at java.base/java.lang.Class.forName(Class.java:669)
        at java.base/java.lang.Class.forName(Class.java:644)
        at 
java.base/java.util.ServiceLoader.loadProvider(ServiceLoader.java:855)
        at 
java.base/java.util.ServiceLoader$ModuleServicesLookupIterator.hasNext(ServiceLoader.java:1080)
        at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
        at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1391)
        at 
java.base/sun.util.cldr.CLDRLocaleProviderAdapter.lambda$new$0(CLDRLocaleProviderAdapter.java:84)
        at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:571)
        at 
java.base/sun.util.cldr.CLDRLocaleProviderAdapter.<init>(CLDRLocaleProviderAdapter.java:83)
        at 
java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
        ... 85 more
]

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

PR Review Comment: https://git.openjdk.org/jdk/pull/18084#discussion_r1535303163

Reply via email to