[ 
https://issues.apache.org/jira/browse/FELIX-3369?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13219435#comment-13219435
 ] 

Richard S. Hall commented on FELIX-3369:
----------------------------------------

I don't believe there were any changes in this area in 4.0.2 vs 4.0.1. This 
sounds like the typical scenario where the JVM is grabbing class loader locks, 
because the Felix framework doesn't hold onto class loader locks while loading 
classes. See:

    http://underlap.blogspot.com/2006_11_01_archive.html

Actually, Java 7 introduced a new mechanism for this (i.e., 
ClassLoader.registerAsParallelCapable()), which the framework can now possibly 
use to fix this issue on > Java 7.

If this is really what is going on here, though, there isn't anything the 
framework can do about it. If you are on Java 6, you could try the flags in the 
blog above.

    
                
> 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
>            Reporter: Carlos Quiroz
>
> 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: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to