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

Chetan Mehrotra commented on SLING-2719:
----------------------------------------

Thread stacks referred in notes
[5]
"FelixFrameworkWiring" daemon prio=6 tid=0x0000000009749000 nid=0xfd4 waiting 
for monitor entry [0x0000000038bcb000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at 
org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator.checkFactoryPreconditions(ResourceResolverFactoryActivator.java:330)
        - waiting to lock <0x000000079624ff08> (a 
org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator)
        at 
org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator.unbindResourceProviderFactory(ResourceResolverFactoryActivator.java:371)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:236)
        at 
org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:37)
        at 
org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:613)
        at 
org.apache.felix.scr.impl.helper.BaseMethod$NotResolved.invoke(BaseMethod.java:572)
        at 
org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:496)
        at 
org.apache.felix.scr.impl.helper.BindMethod.invoke(BindMethod.java:38)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.invokeUnbindMethod(DependencyManager.java:1404)
        at 
org.apache.felix.scr.impl.manager.ImmediateComponentManager.invokeUnbindMethod(ImmediateComponentManager.java:327)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:530)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:274)
        at 
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
        at 
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
        at org.apache.felix.framework.Felix.access$000(Felix.java:74)
        at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
        at 
org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
        at 
org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
        - locked <0x0000000796d5d030> (a 
java.util.concurrent.atomic.AtomicReference)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1301)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1599)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:555)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:451)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:274)
        at 
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
        at 
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
        at org.apache.felix.framework.Felix.access$000(Felix.java:74)
        at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
        at 
org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
        at 
org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
        at 
com.day.crx.sling.server.impl.jmx.ManagedRepository.deactivate(ManagedRepository.java:328)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:236)
        at 
org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:37)
        at 
org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:613)
        at 
org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:496)
        at 
org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:149)
        at 
org.apache.felix.scr.impl.manager.ImmediateComponentManager.disposeImplementationObject(ImmediateComponentManager.java:286)
        at 
org.apache.felix.scr.impl.manager.ImmediateComponentManager.deleteComponent(ImmediateComponentManager.java:160)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$Active.ungetService(AbstractComponentManager.java:1661)
        at 
org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:717)
        at 
org.apache.felix.framework.ServiceRegistrationImpl.ungetFactoryUnchecked(ServiceRegistrationImpl.java:349)
        at 
org.apache.felix.framework.ServiceRegistrationImpl.ungetService(ServiceRegistrationImpl.java:258)
        at 
org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:389)
        at org.apache.felix.framework.Felix.ungetService(Felix.java:3502)
        at 
org.apache.felix.framework.BundleContextImpl.ungetService(BundleContextImpl.java:486)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.ungetService(DependencyManager.java:961)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.unbind(DependencyManager.java:1204)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.close(DependencyManager.java:1031)
        at 
org.apache.felix.scr.impl.manager.ImmediateComponentManager.disposeImplementationObject(ImmediateComponentManager.java:298)
        at 
org.apache.felix.scr.impl.manager.ImmediateComponentManager.deleteComponent(ImmediateComponentManager.java:160)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1305)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1599)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:555)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:451)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:274)
        at 
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
        at 
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
        at org.apache.felix.framework.Felix.access$000(Felix.java:74)
        at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
        at 
org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
        at 
org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
        - locked <0x00000007944dae38> (a 
java.util.concurrent.atomic.AtomicReference)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1301)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1599)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:555)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:451)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:274)
        at 
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
        at 
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
        at org.apache.felix.framework.Felix.access$000(Felix.java:74)
        at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
        at 
org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
        at 
org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
        - locked <0x00000007944da9b0> (a 
java.util.concurrent.atomic.AtomicReference)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1301)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1599)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:555)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:451)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:274)
        at 
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
        at 
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
        at org.apache.felix.framework.Felix.access$000(Felix.java:74)
        at org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
        at 
org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
        at 
org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
        - locked <0x00000007944da478> (a 
java.util.concurrent.atomic.AtomicReference)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1301)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.dispose(AbstractComponentManager.java:1617)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.disposeInternal(AbstractComponentManager.java:574)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:404)
        at 
org.apache.felix.scr.impl.config.ImmediateComponentHolder.disposeComponents(ImmediateComponentHolder.java:371)
        at 
org.apache.felix.scr.impl.BundleComponentActivator.dispose(BundleComponentActivator.java:320)
        at 
org.apache.felix.scr.impl.Activator.disposeComponents(Activator.java:316)
        at org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:183)
        at 
org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:868)
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:789)
        at 
org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:514)
        at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4319)
        at org.apache.felix.framework.Felix.stopBundle(Felix.java:2421)
        at org.apache.felix.framework.Felix$RefreshHelper.stop(Felix.java:4704)
        at org.apache.felix.framework.Felix.refreshPackages(Felix.java:4026)
        at 
org.apache.felix.framework.FrameworkWiringImpl.run(FrameworkWiringImpl.java:172)
        at java.lang.Thread.run(Thread.java:662)

[6] "FelixStartLevel" daemon prio=6 tid=0x000000002c81a800 nid=0x96c in 
Object.wait() [0x000000003557c000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x000000079415eca0> (a [Ljava.lang.Object;)
        at java.lang.Object.wait(Object.java:485)
        at org.apache.felix.framework.Felix.acquireGlobalLock(Felix.java:5019)
        - locked <0x000000079415eca0> (a [Ljava.lang.Object;)
        at 
org.apache.felix.framework.StatefulResolver.resolve(StatefulResolver.java:451)
        at 
org.apache.felix.framework.BundleWiringImpl.searchDynamicImports(BundleWiringImpl.java:1578)
        at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1478)
        at 
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1882)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at 
org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1356)
        at 
org.apache.felix.framework.ServiceRegistrationImpl$ServiceReferenceImpl.isAssignableTo(ServiceRegistrationImpl.java:548)
        at 
org.apache.felix.framework.util.Util.isServiceAssignable(Util.java:280)
        at 
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:916)
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
        at 
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
        at org.apache.felix.framework.Felix.registerService(Felix.java:3345)
        at 
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)
        - locked <0x000000079695a188> (a 
java.util.concurrent.atomic.AtomicReference)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:644)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.registerComponentService(AbstractComponentManager.java:688)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1481)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:550)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceAdded(DependencyManager.java:333)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:159)
        at 
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
        at 
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
        at org.apache.felix.framework.Felix.registerService(Felix.java:3345)
        at 
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)
        - locked <0x0000000796959eb8> (a 
java.util.concurrent.atomic.AtomicReference)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:644)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.registerComponentService(AbstractComponentManager.java:688)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1481)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:550)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceAdded(DependencyManager.java:333)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:159)
        at 
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
        at 
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
        at org.apache.felix.framework.Felix.registerService(Felix.java:3345)
        at 
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)
        - locked <0x0000000796959bc8> (a 
java.util.concurrent.atomic.AtomicReference)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:644)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.registerComponentService(AbstractComponentManager.java:688)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1481)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:550)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceAdded(DependencyManager.java:333)
        at 
org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:159)
        at 
org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
        at 
org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4335)
        at org.apache.felix.framework.Felix.registerService(Felix.java:3345)
        at 
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
        at 
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:320)
        at 
org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator.checkFactoryPreconditions(ResourceResolverFactoryActivator.java:324)
        - locked <0x000000079624ff08> (a 
org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator)
        at 
org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator.activate(ResourceResolverFactoryActivator.java:282)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:236)
        at 
org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:37)
        at 
org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:613)
        at 
org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:496)
        at 
org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:149)
        at 
org.apache.felix.scr.impl.manager.ImmediateComponentManager.createImplementationObject(ImmediateComponentManager.java:251)
        at 
org.apache.felix.scr.impl.manager.ImmediateComponentManager.createComponent(ImmediateComponentManager.java:119)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1518)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:550)
        at 
org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:261)
        at 
org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:328)
        at 
org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:158)
        at 
org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:113)
        at 
org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:261)
        at org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:179)
        at 
org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:868)
        at 
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:789)
        at 
org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:514)
        at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4319)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:1993)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1261)
        at 
org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:298)
        at java.lang.Thread.run(Thread.java:662)
                
> Deadlock in ResourceResolverFactoryActivator.checkFactoryPreconditions
> ----------------------------------------------------------------------
>
>                 Key: SLING-2719
>                 URL: https://issues.apache.org/jira/browse/SLING-2719
>             Project: Sling
>          Issue Type: Bug
>          Components: ResourceResolver
>    Affects Versions: Resource Resolver 1.0.2
>         Environment: JBoss
>            Reporter: Chetan Mehrotra
>              Labels: deadlock
>
> We are seeing intermittent issues of deadlock while running a Sling based 
> webapp in an app server like JBoss. The deadlock is being seen between the 
> FelixFrameworkWiring and FelixStartLevel threads. 
> For example analyzing the order of locks taken in the threaddump-1.log (shown 
> below). Here the FelixFrameworkWiring thread has the Global bundle lock at 
> Felix level [1] and is waiting for the lock in 
> ResourceResolverFactoryActivator.checkFactoryPreconditions. While the 
> FelixStartLevel thread has the lock on RRF and is waiting for global lock. 
> Thus resulting in a deadlock
> The FelixFrameworkWiring [5] is busy in deactivating components because of a 
> package refresh earlier (which lead to repository getting shutdown and thus 
> triggering deactivation of ResourceResolverFactoryActivator). While the 
> FelixStartLevel [6] thread has activated ResourceResolverFactoryActivator 
> (thus hold the lock) and later requires global lock for some operation.
> Looking at the code for 
> ResourceResolverFactoryActivator.checkFactoryPreconditions [2] it appears to 
> take and hold a lock (on this) while making a call to OSGi container. Such a 
> usage *might* cause issues like deadlock. So it would be better if the 
> ResourceResolverFactoryActivator does not hold any lock while making the call 
> to container services [3]
> "FelixFrameworkWiring"
> - locked <0x00000007944da478> (a java.util.concurrent.atomic.AtomicReference) 
> org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
> - locked <0x00000007944da9b0> (a java.util.concurrent.atomic.AtomicReference) 
> org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
> - locked <0x00000007944dae38> (a java.util.concurrent.atomic.AtomicReference) 
> org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
> - locked <0x0000000796d5d030> (a java.util.concurrent.atomic.AtomicReference) 
> org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:702)
> - waiting to lock <0x000000079624ff08> (a 
> org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator) 
> org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator.checkFactoryPreconditions(ResourceResolverFactoryActivator.java:330)
> "FelixStartLevel"
> - locked <0x000000079624ff08> (a 
> org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator) 
> org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator.checkFactoryPreconditions(ResourceResolverFactoryActivator.java:324)
> - locked <0x0000000796959bc8> (a java.util.concurrent.atomic.AtomicReference) 
> org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)
> - locked <0x0000000796959eb8> (a java.util.concurrent.atomic.AtomicReference) 
> org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)
> - locked <0x000000079695a188> (a java.util.concurrent.atomic.AtomicReference) 
> org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)
> - waiting <0x000000079415eca0> (a [Ljava.lang.Object;) 
> org.apache.felix.framework.Felix.acquireGlobalLock(Felix.java:5019)
> [1] This has been confirmed via the value for m_globalLockThread of Felix 
> instance in Heap Dump
> [2] 
> https://github.com/apache/sling/blob/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java#L313
> [3] http://njbartlett.name/files/osgibook_preview_20091217.pdf (Section 6.4 
> Don’t Hold Locks when Calling Foreign Code)

--
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