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