[ 
https://issues.apache.org/jira/browse/FELIX-4123?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Guillaume Sauthier closed FELIX-4123.
-------------------------------------

    Resolution: Invalid

Recent changes in ManagedType make this stack no more possible
Please re-open if you hit again that issue
                
> 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