Clement Escoffier created FELIX-4123:
----------------------------------------

             Summary: Deadlock in new extender because of factory lock used in 
removedService
                 Key: FELIX-4123
                 URL: https://issues.apache.org/jira/browse/FELIX-4123
             Project: Felix
          Issue Type: Bug
          Components: iPOJO
    Affects Versions: ipojo-runtime-1.10
            Reporter: Clement Escoffier
            Assignee: Guillaume Sauthier
             Fix For: ipojo-runtime-1.10.1


Here is the stack trace

2013-06-11 21:18:35
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.45-b01-451 mixed mode):
"BundleWatcher: 1" daemon prio=5 tid=7ff90733b000 nid=0x1120d0000 waiting on 
condition [1120cf000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <7f4676828> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
        at java.util.concurrent.DelayQueue.take(DelayQueue.java:160)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:602)
        at 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:957)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917)
        at java.lang.Thread.run(Thread.java:680)
"CM Event Dispatcher" daemon prio=5 tid=7ff905407000 nid=0x111fcd000 in 
Object.wait() [111fcc000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <7f45e14a8> (a java.util.LinkedList)
        at java.lang.Object.wait(Object.java:485)
        at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:77)
        - locked <7f45e14a8> (a java.util.LinkedList)
        at java.lang.Thread.run(Thread.java:680)
"CM Configuration Updater" daemon prio=5 tid=7ff905406000 nid=0x111eca000 in 
Object.wait() [111ec9000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <7f45e1458> (a java.util.LinkedList)
        at java.lang.Object.wait(Object.java:485)
        at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:77)
        - locked <7f45e1458> (a java.util.LinkedList)
        at java.lang.Thread.run(Thread.java:680)
"[iPOJO] pool-1-thread-1" prio=5 tid=7ff9057bb800 nid=0x111dc7000 waiting for 
monitor entry [111dc6000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at 
org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:254)
        - waiting to lock <7f42b4398> (a 
org.apache.felix.ipojo.ComponentFactory)
        at 
org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:235)
        at 
org.apache.felix.ipojo.extender.internal.linker.ManagedType$InstanceSupport$1.call(ManagedType.java:292)
        at 
org.apache.felix.ipojo.extender.internal.linker.ManagedType$InstanceSupport$1.call(ManagedType.java:286)
        at 
org.apache.felix.ipojo.extender.internal.queue.JobInfoCallable.call(JobInfoCallable.java:100)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
        at java.lang.Thread.run(Thread.java:680)
"FelixStartLevel" daemon prio=5 tid=7ff9071bc000 nid=0x111600000 in 
Object.wait() [1115ff000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <7f47007c0> (a java.util.ArrayList)
        at java.lang.Object.wait(Object.java:485)
        at 
org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:279)
        - locked <7f47007c0> (a java.util.ArrayList)
        at java.lang.Thread.run(Thread.java:680)
"FelixDispatchQueue" prio=5 tid=7ff903094800 nid=0x111817000 in Object.wait() 
[111816000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <7f4628230> (a java.util.ArrayList)
        at java.lang.Object.wait(Object.java:485)
        at 
org.apache.felix.framework.util.EventDispatcher.run(EventDispatcher.java:1063)
        - locked <7f4628230> (a java.util.ArrayList)
        at 
org.apache.felix.framework.util.EventDispatcher.access$000(EventDispatcher.java:54)
        at 
org.apache.felix.framework.util.EventDispatcher$1.run(EventDispatcher.java:101)
        at java.lang.Thread.run(Thread.java:680)
"Low Memory Detector" daemon prio=5 tid=7ff90301a800 nid=0x110dd7000 runnable 
[00000000]
   java.lang.Thread.State: RUNNABLE
"C2 CompilerThread1" daemon prio=9 tid=7ff90301a000 nid=0x110cd4000 waiting on 
condition [00000000]
   java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" daemon prio=9 tid=7ff903019000 nid=0x110bd1000 waiting on 
condition [00000000]
   java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" daemon prio=9 tid=7ff903018800 nid=0x110ace000 waiting on 
condition [00000000]
   java.lang.Thread.State: RUNNABLE
"Surrogate Locker Thread (Concurrent GC)" daemon prio=5 tid=7ff903017800 
nid=0x1109cb000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=8 tid=7ff90513d800 nid=0x1107c0000 in Object.wait() 
[1107bf000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <7f44c0858> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
        - locked <7f44c0858> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:171)
"Reference Handler" daemon prio=10 tid=7ff90513c800 nid=0x1106bd000 in 
Object.wait() [1106bc000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <7f44c0870> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:485)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
        - locked <7f44c0870> (a java.lang.ref.Reference$Lock)
"main" prio=5 tid=7ff906800800 nid=0x10884b000 waiting on condition [108847000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <7f3251978> (a 
java.util.concurrent.FutureTask$Sync)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:969)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1281)
        at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:218)
        at java.util.concurrent.FutureTask.get(FutureTask.java:83)
        at 
org.apache.felix.ipojo.extender.internal.linker.ManagedType$InstanceSupport.removedService(ManagedType.java:337)
        at 
org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:922)
        at 
org.osgi.util.tracker.AbstractTracked.untrack(AbstractTracked.java:351)
        at org.osgi.util.tracker.ServiceTracker.close(ServiceTracker.java:403)
        at 
org.apache.felix.ipojo.extender.internal.linker.ManagedType.stateChanged(ManagedType.java:189)
        at org.apache.felix.ipojo.IPojoFactory.stop(IPojoFactory.java:562)
        - locked <7f42b4398> (a org.apache.felix.ipojo.ComponentFactory)
        at org.apache.felix.ipojo.IPojoFactory.dispose(IPojoFactory.java:591)
        - locked <7f42b4398> (a org.apache.felix.ipojo.ComponentFactory)
        at 
org.apache.felix.ipojo.extender.internal.linker.ManagedType.stop(ManagedType.java:167)
        at 
org.apache.felix.ipojo.extender.internal.linker.DeclarationLinker.removedService(DeclarationLinker.java:107)
        at 
org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:922)
        at 
org.osgi.util.tracker.AbstractTracked.untrack(AbstractTracked.java:351)
        at 
org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:865)
        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:4401)
        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:151)
        at 
org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
        at 
org.apache.felix.ipojo.extender.internal.AbstractService.stop(AbstractService.java:73)
        at 
org.apache.felix.ipojo.extender.internal.processor.ComponentsBundleProcessor$ComponentsAndInstances.stop(ComponentsBundleProcessor.java:223)
        at 
org.apache.felix.ipojo.extender.internal.processor.ComponentsBundleProcessor.deactivate(ComponentsBundleProcessor.java:112)
        at 
org.apache.felix.ipojo.extender.internal.processor.ForwardingBundleProcessor.deactivate(ForwardingBundleProcessor.java:42)
        at 
org.apache.felix.ipojo.extender.internal.processor.ChainedBundleProcessor.deactivate(ChainedBundleProcessor.java:100)
        at 
org.apache.felix.ipojo.extender.internal.Extender$1.removedBundle(Extender.java:173)
        at 
org.osgi.util.tracker.BundleTracker$Tracked.customizerRemoved(BundleTracker.java:467)
        at 
org.osgi.util.tracker.AbstractTracked.untrack(AbstractTracked.java:351)
        at 
org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:420)
        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:4385)
        at org.apache.felix.framework.Felix.stopBundle(Felix.java:2508)
        at org.apache.felix.framework.BundleImpl.stop(BundleImpl.java:991)
        at org.apache.felix.framework.BundleImpl.stop(BundleImpl.java:978)
        at 
org.apache.felix.ipojo.runtime.core.TestComplexConfigurations.testDynamism(TestComplexConfigurations.java:110)
        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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
        at 
org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:67)
        at 
org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:37)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
        at 
org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.invokeViaJUnit(JUnitProbeInvoker.java:111)
        at 
org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.findAndInvoke(JUnitProbeInvoker.java:84)
        at 
org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.call(JUnitProbeInvoker.java:72)
        at 
org.ops4j.pax.exam.nat.internal.NativeTestContainer.call(NativeTestContainer.java:77)
        - locked <7f46282f0> (a 
org.ops4j.pax.exam.nat.internal.NativeTestContainer)
        at 
org.ops4j.pax.exam.spi.reactors.EagerSingleStagedReactor.invoke(EagerSingleStagedReactor.java:109)
        at org.ops4j.pax.exam.junit.PaxExam$2.evaluate(PaxExam.java:294)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:69)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:48)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:292)
        at org.ops4j.pax.exam.junit.PaxExam.run(PaxExam.java:111)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
        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.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
        at 
org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:159)
        at 
org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:87)
        at 
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
        at 
org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)
"VM Thread" prio=9 tid=7ff905138000 nid=0x1105ba000 runnable
"Gang worker#0 (Parallel GC Threads)" prio=9 tid=7ff905000800 nid=0x10bc53000 
runnable
"Gang worker#1 (Parallel GC Threads)" prio=9 tid=7ff905001000 nid=0x10bd56000 
runnable
"Gang worker#2 (Parallel GC Threads)" prio=9 tid=7ff905002000 nid=0x10be59000 
runnable
"Gang worker#3 (Parallel GC Threads)" prio=9 tid=7ff905002800 nid=0x10bf5c000 
runnable
"Gang worker#4 (Parallel GC Threads)" prio=9 tid=7ff905003000 nid=0x10c05f000 
runnable
"Gang worker#5 (Parallel GC Threads)" prio=9 tid=7ff905003800 nid=0x10c162000 
runnable
"Gang worker#6 (Parallel GC Threads)" prio=9 tid=7ff905004800 nid=0x10c265000 
runnable
"Gang worker#7 (Parallel GC Threads)" prio=9 tid=7ff905005000 nid=0x10c368000 
runnable
"Concurrent Mark-Sweep GC Thread" prio=9 tid=7ff9050e2800 nid=0x110234000 
runnable
"Gang worker#0 (Parallel CMS Threads)" prio=9 tid=7ff9050e1000 nid=0x10f82e000 
runnable
"Gang worker#1 (Parallel CMS Threads)" prio=9 tid=7ff9050e1800 nid=0x10f931000 
runnable
"VM Periodic Task Thread" prio=10 tid=7ff90302c800 nid=0x110eda000 waiting on 
condition
"Exception Catcher Thread" prio=10 tid=7ff906801800 nid=0x108a7a000 runnable
JNI global references: 972
Heap
 par new generation   total 19136K, used 3371K [7f3000000, 7f44c0000, 7f44c0000)
  eden space 17024K,  15% used [7f3000000, 7f329a638, 7f40a0000)
  from space 2112K,  33% used [7f42b0000, 7f43605d0, 7f44c0000)
  to   space 2112K,   0% used [7f40a0000, 7f40a0000, 7f42b0000)
 concurrent mark-sweep generation total 63872K, used 2700K [7f44c0000, 
7f8320000, 7fae00000)
 concurrent-mark-sweep perm gen total 29084K, used 18052K [7fae00000, 
7fca67000, 800000000)

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