JDK-8268128 : ProviderConfig deadlock in JDK 8u291
  • Type: Bug
  • Component: security-libs
  • Sub-Component: java.security
  • Affected Version: 8u291
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2021-06-02
  • Updated: 2021-07-27
  • Resolved: 2021-06-09
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7 JDK 8
7u321Fixed 8u291Fixed
Related Reports
Relates :  
Relates :  
Description
"Thread-8":
 waiting to lock monitor 0x00005631e0b45f88 (object 0x00000000ee0b2330, a sun.security.jca.ProviderConfig),
 which is held by "Thread-5"
"Thread-5":
 waiting to lock monitor 0x00005631e0b505f8 (object 0x00000000ee0a4b38, a java.lang.Class),
 which is held by "Thread-8"
Java stack information for the threads listed above:
===================================================
"Thread-8":
    at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:168)
    - waiting to lock <0x00000000ee0b2330> (a sun.security.jca.ProviderConfig)
    at sun.security.jca.ProviderList.loadAll(ProviderList.java:282)
    at sun.security.jca.ProviderList.removeInvalid(ProviderList.java:299)
    at sun.security.jca.Providers.getFullProviderList(Providers.java:164)
    - locked <0x00000000ee0a4b38> (a java.lang.Class for sun.security.jca.Providers)
    at java.security.Security.getProviders(Security.java:454)
    at sun.security.x509.AlgorithmId.algOID(AlgorithmId.java:619)
    at sun.security.x509.AlgorithmId.get(AlgorithmId.java:444)
    at sun.security.pkcs.SignerInfo.verify(SignerInfo.java:379)
    at sun.security.pkcs.PKCS7.verify(PKCS7.java:579)
    at sun.security.pkcs.PKCS7.verify(PKCS7.java:596)
    at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:283)
    at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:259)
    at java.util.jar.JarVerifier.processEntry(JarVerifier.java:275)
    at java.util.jar.JarVerifier.update(JarVerifier.java:230)
    at java.util.jar.JarFile.initializeVerifier(JarFile.java:384)
    at java.util.jar.JarFile.getInputStream(JarFile.java:451)
    - locked <0x00000000e0be4af8> (a com.oracle.classloader.JarCodeSource$1)
    at com.oracle.classloader.JarCodeSource$3.apply(JarCodeSource.java:384)
    at com.oracle.classloader.JarCodeSource$3.apply(JarCodeSource.java:381)
    at com.oracle.classloader.JarCodeSource.withJarFile(JarCodeSource.java:337)
    at com.oracle.classloader.JarCodeSource.getJarInputStream(JarCodeSource.java:381)
    at com.oracle.classloader.JarURLHandler$Connection.getInputStream(JarURLHandler.java:208)
    at java.net.URL.openStream(URL.java:1092)
    at weblogic.management.provider.internal.BeanInfoAccessImpl.discoverBeanInfoFactories(BeanInfoAccessImpl.java:154)
    at weblogic.management.provider.internal.BeanInfoAccessSingleton$SINGLETON.<clinit>(BeanInfoAccessSingleton.java:36)
    at weblogic.management.provider.internal.BeanInfoAccessSingleton.getInstance(BeanInfoAccessSingleton.java:42)
    at weblogic.management.provider.internal.BeanInfoAccessService.start(BeanInfoAccessService.java:47)
    at weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:76)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1287)
    at org.jvnet.hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:333)
    at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:375)
    at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487)
    at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:305)
    at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85)
    at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2126)
    at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:116)
    - locked <0x00000000f2419b48> (a java.lang.Object)
    at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:90)
    at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1237)
    at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.run(CurrentTaskFuture.java:1168)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
"Thread-5":
    at sun.security.jca.Providers.endThreadProviderList(Providers.java:232)
    - waiting to lock <0x00000000ee0a4b38> (a java.lang.Class for sun.security.jca.Providers)
    at sun.security.jca.Providers.stopJarVerification(Providers.java:127)
    at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:261)
    at java.util.jar.JarVerifier.processEntry(JarVerifier.java:318)
    at java.util.jar.JarVerifier.update(JarVerifier.java:230)
    at java.util.jar.JarFile.initializeVerifier(JarFile.java:384)
    at java.util.jar.JarFile.ensureInitialization(JarFile.java:615)
    - locked <0x00000000f2746e68> (a java.util.jar.JarFile)
    at java.util.jar.JavaUtilJarAccessImpl.ensureInitialization(JavaUtilJarAccessImpl.java:69)
    at sun.misc.URLClassPath$JarLoader$2.getManifest(URLClassPath.java:993)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:451)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    - locked <0x00000000f2746b38> (a java.lang.Object)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at com.oracle.classloader.search.SearchSystemLoader.loadClass(SearchSystemLoader.java:101)
    at com.oracle.classloader.search.SearchSequence.loadClass(SearchSequence.java:130)
    at com.oracle.classloader.PolicyClassLoader$1.run(PolicyClassLoader.java:389)
    at com.oracle.classloader.PolicyClassLoader$1.run(PolicyClassLoader.java:387)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.oracle.classloader.PolicyClassLoader.findClass(PolicyClassLoader.java:387)
    at com.oracle.classloader.PolicyClassLoader.loadClass(PolicyClassLoader.java:371)
    - locked <0x00000000f2746a50> (a java.lang.Object)
    at com.oracle.classloader.weblogic.LaunchClassLoader.loadClass(LaunchClassLoader.java:55)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:215)
    at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:206)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206)
    at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187)
    - locked <0x00000000ee0b2330> (a sun.security.jca.ProviderConfig)
    at sun.security.jca.ProviderList.getProvider(ProviderList.java:233)
    at sun.security.jca.ProviderList$ServiceList.tryGet(ProviderList.java:434)
    at sun.security.jca.ProviderList$ServiceList.access$200(ProviderList.java:376)
    at sun.security.jca.ProviderList$ServiceList$1.hasNext(ProviderList.java:486)
    at javax.crypto.Mac.getInstance(Mac.java:174)
    at com.bea.common.security.utils.HMAC.init(HMAC.java:31)
    at weblogic.security.HMAC.init(HMAC.java:26)
    at weblogic.security.EarlySecurityInitializationService.start(EarlySecurityInitializationService.java:22)
    at weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:76)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1287)
    at org.jvnet.hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:333)
    at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:375)
    at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487)
    at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:305)
    at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85)
    at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2126)
    at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:116)
    - locked <0x00000000f2419f38> (a java.lang.Object)
    at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:90)
    at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1237)
    at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.run(CurrentTaskFuture.java:1168)
    at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$UpOneLevel.run(CurrentTaskFuture.java:786)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Comments
The algorithm triggering the early AlgorithmId table initialization in this case is SHA512withRSA
08-06-2021