[ 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