[ https://issues.apache.org/jira/browse/FELIX-3369?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Richard S. Hall resolved FELIX-3369. ------------------------------------ Resolution: Duplicate Fix Version/s: (was: framework-4.2.0) Assignee: Richard S. Hall I am going to resolve this as a duplicate of FELIX-3553 since I believe this deadlock is related to parallel class loading. Since I've applied a patch to support parallel class loaders in Java 7, I am hoping this is fixed on Java 7. If not, please reopen this issue. > Deadlock on org.apache.felix.framework.BundleWiringImpl > ------------------------------------------------------- > > Key: FELIX-3369 > URL: https://issues.apache.org/jira/browse/FELIX-3369 > Project: Felix > Issue Type: Bug > Components: Framework > Affects Versions: framework-4.0.2 > Environment: JDK 1.6.0_29 on OSX > Reporter: Carlos Quiroz > Assignee: Richard S. Hall > > After upgrading to Felix 4.0.2 from 3.2.1 one of our legacy bundles started > failing to start > After inspection I found a deadlock on > org.apache.felix.framework.BundleWiringImpl > A downgrade to Felix 4.0.1 fixes this problem so I assume the problem started > in 4.0.2 > Found one Java-level deadlock: > ============================= > "task": > waiting to lock monitor 103072f18 (object 7f4615700, a > org.apache.felix.framework.BundleWiringImpl$BundleClassLoaderJava5), > which is held by "FelixStartLevel" > "FelixStartLevel": > waiting to lock monitor 1030287e0 (object 7f625f8a8, a > org.apache.felix.framework.BundleWiringImpl$BundleClassLoaderJava5), > which is held by "task" > Java stack information for the threads listed above: > =================================================== > "task": > at > org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1836) > - waiting to lock <7f4615700> (a > org.apache.felix.framework.BundleWiringImpl$BundleClassLoaderJava5) > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) > at > org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1317) > at > org.apache.felix.framework.BundleWiringImpl.searchDynamicImports(BundleWiringImpl.java:1558) > at > org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1439) > at > org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72) > at > org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843) > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:247) > at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:357) > at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:163) > at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620) > at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247) > at net.jini.loader.ClassLoading.loadClass(ClassLoading.java:138) > at > net.jini.io.MarshalInputStream.resolveClass(MarshalInputStream.java:296) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574) > at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) > at net.jini.io.MarshalledInstance.get(MarshalledInstance.java:358) > at net.jini.io.MarshalledInstance.get(MarshalledInstance.java:287) > at com.sun.jini.proxy.MarshalledWrapper.get(MarshalledWrapper.java:127) > at com.sun.jini.reggie.Item.get(Item.java:155) > at com.sun.jini.reggie.Item.toServiceItem(Item.java:191) > at com.sun.jini.reggie.Matches.get(Matches.java:76) > at com.sun.jini.reggie.RegistrarProxy.lookup(RegistrarProxy.java:138) > at > net.jini.lookup.ServiceDiscoveryManager$LookupCacheImpl$LookupTask.run(ServiceDiscoveryManager.java:929) > at > net.jini.lookup.ServiceDiscoveryManager$LookupCacheImpl$RegisterListenerTask.run(ServiceDiscoveryManager.java:901) > at com.sun.jini.thread.TaskManager$TaskThread.run(TaskManager.java:331) > "FelixStartLevel": > at > org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1836) > - waiting to lock <7f625f8a8> (a > org.apache.felix.framework.BundleWiringImpl$BundleClassLoaderJava5) > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) > at > org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1317) > at > org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1481) > at > org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427) > at > org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72) > at > org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843) > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) > at edu.gemini.pot.spdb.osgi.Activator.start(Activator.java:73) > at > org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:641) > at org.apache.felix.framework.Felix.activateBundle(Felix.java:1977) > at org.apache.felix.framework.Felix.startBundle(Felix.java:1895) > at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191) > at > org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295) > at java.lang.Thread.run(Thread.java:680) -- 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