Ulf Lilleengen created FELIX-3728:
-------------------------------------

             Summary: Classloading deadlock in BundleWiringImpl with multiple 
threads 
                 Key: FELIX-3728
                 URL: https://issues.apache.org/jira/browse/FELIX-3728
             Project: Felix
          Issue Type: Bug
          Components: Framework
    Affects Versions: framework-4.0.3
         Environment: RHEL 6.2
JVM 1.7.0_05  
Intel(R) Xeon(R) CPU E5530 @ 2.40GHz with 16 CPU cores 48922464 kB ram
            Reporter: Ulf Lilleengen


I think we have encountered the same issue as in 
https://issues.apache.org/jira/browse/FELIX-3369 in a system which does a lot 
of class loading across bundles from multiple threads. Two threads are stuck in 
a deadlock when loading the same class. Stack trace:

[14:28:56.140] Found one Java-level deadlock: 
[14:28:56.140] ============================= 
[14:28:56.140] "Queue runner 6": 
[14:28:56.140] waiting to lock monitor 0x00007f444405c5c0 (object 
0x000000009cce8dc0, a 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoaderJava5), 
[14:28:56.140] which is held by "Queue runner 4" 
[14:28:56.140] "Queue runner 4": 
[14:28:56.140] waiting to lock monitor 0x00007f444405c668 (object 
0x00000000834baff0, a 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoaderJava5), 
[14:28:56.140] which is held by "Queue runner 6" 
[14:28:56.140] 
[14:28:56.140] Java stack information for the threads listed above: 
[14:28:56.140] =================================================== 
[14:28:56.141] "Queue runner 6": 
[14:28:56.141] at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1836)
 
[14:28:56.141] - waiting to lock <0x000000009cce8dc0> (a 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoaderJava5) 
[14:28:56.141] at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
[14:28:56.141] at 
org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1317)
 
[14:28:56.141] at 
org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1481)
 
[14:28:56.141] at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
 
[14:28:56.141] at 
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
 
[14:28:56.141] at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
 
[14:28:56.141] at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
[14:28:56.141] at java.lang.ClassLoader.defineClass1(Native Method) 
[14:28:56.141] at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
[14:28:56.142] at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2128)
 
[14:28:56.142] - locked <0x00000000834baff0> (a 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoaderJava5) 
[14:28:56.142] at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1432)
 
[14:28:56.142] at 
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
 
[14:28:56.142] at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
 
[14:28:56.142] at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
....
[14:28:56.143] at java.lang.Thread.run(Thread.java:722) 
[14:28:56.143] "Queue runner 4": 
[14:28:56.143] at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1836)
 
[14:28:56.143] - waiting to lock <0x00000000834baff0> (a 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoaderJava5) 
[14:28:56.143] at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
[14:28:56.143] at 
org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1317)
 
[14:28:56.143] at 
org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1481)
 
[14:28:56.143] at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
 
[14:28:56.143] at 
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
 
[14:28:56.143] at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
 
[14:28:56.143] at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
....
[14:28:56.144] at java.lang.Thread.run(Thread.java:722) 

Let me know if you would like more info.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to