Uploaded image for project: 'Felix'
  1. Felix
  2. FELIX-3680

Exceptions in SCR using concurrent service activation/deactivation

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • scr-1.6.2
    • None
    • linux fc16, jdk1.6.032

    Description

      This issue contains a sample code which reproduces many various exceptions, using a concurrent
      scenario, where some services are enabled/disabled concurrently.

      I did not have time to commit an integration test about these exceptions but I will try to do.
      In the meantime, I join to this issue my scenario ...
      Before trying to make an integration test, could you please run the scenario, in order to confirm the problems, and that the scenario is valid ?

      To execute the scenario

      1) first, since the framework is not currently using any available log service, you have to make a modification in the framework, in order to force the framework to use a log service, when displaying caught exceptions. If you don't do this, then you will get many exceptions thrown by many threads and displayed in the console; and this is then not easy to diagnose problems.

      So, in the framework, in the file src/main/java/org/apache/felix/framework/Logger.java, in method setBundleContext, just uncomment the following code, which activate the fwk log service listener:

      protected void setSystemBundleContext(BundleContext context)

      { // TODO: Find a way to log to a log service inside the framework. // The issue is that we log messages while holding framework // internal locks -- hence, when a log service calls back into // the framework (e.g., by loading a class) we might deadlock. // One instance of this problem is tracked in FELIX-536. // For now we just disable logging to log services inside the // framework. m_context = context; startListeningForLogService(); }

      -> this will make sure all logs caught by the framework are redirected to the log service, and I did not find any deadlock issue, as described in the comments.
      Notice that even if you don't activate the log service listener, then the Exceptions are also taking place ...

      2) next, compile the attached concurrent scenario (it's a simple maven project).

      3) run the framework with the following bundles:

      org.apache.felix.scr from trunk
      org.apache.felix.configadmin-1.4.0.jar

      4) wait for about 20 seconds, then suspend the framework, and kill it (using kill -9)
      Don't do "Ctrl-C", because this might interrupt some locked threads and some exceptions might be generated because of the Ctlr-C ... So doing a "Kill -9" is better.

      5) Then take a look at the produced "./logs.txt" file.

      scenario description:
      ===============

      here is a description of the Components used in the scenario:

      A: delayed component, enabled, depending on B,C,D,E,F
      B,C,D,E: delayed components, disabled, without any dependencies
      F: delayed component, disabled, depending on G
      G: delayed component, disabled, depending on H
      I: delayed component, disabled, depending on J
      J: delayed component, disabled, depending on K
      Main: depends on A.

      "Main" is the main scenario component: it uses a thread pool in order to enable B,C,D,E,F,G,H,I,J,K in parallel, randomly.

      "Main" depends on A.

      When B,C,D,E,F,G,H,I,J,K are enabled, then A becomes satisfied, provided and injected in the "Main" component.

      Once "A" is bound to "Main", then B,C,D,E,F,G,H,I,J,K are then disabled in parallel, randomly. "Main" also checks that "A" is properly unbound.

      LogService logs are written to "./logs.txt".

      So, running the test using scr 1.6.0 runs seamlessly. But with trunk we have many various exceptions.
      For example, I have noticed the three following exceptions:

      1) we have some IllegalMontorStateException:
      =================================

      log level: 1 D=Mon Sep 24 11:07:45 CEST 2012, T=Thread-1: [F] Locking activity before IllegalMonitorStateException:
      obtainWriteLock failure from: ImmediateComponentManager.ungetService.1 readLocks: 0 writeLocks: 0 thread: Thread[SCR Component Actor,5,main] time: 1348477665425 Could not obtain write lock.

      log level: 1 D=Mon Sep 24 11:07:45 CEST 2012, T=Thread-1: [F] Thread dump

      ThreadId: 59 : name: pool-1-thread-30 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 58 : name: pool-1-thread-29 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 57 : name: pool-1-thread-28 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 56 : name: pool-1-thread-27 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 55 : name: pool-1-thread-26 State: BLOCKED
      LockInfo: org.apache.felix.framework.ServiceRegistry@ae533a LockOwnerId: 15 LockOwnerName: SCR Component Actor
      org.apache.felix.framework.ServiceRegistry.getServiceReferences(ServiceRegistry.java:204)
      org.apache.felix.framework.Felix.getServiceReferences(Felix.java:3372)
      org.apache.felix.framework.Felix.getAllowedServiceReferences(Felix.java:3445)
      org.apache.felix.framework.BundleContextImpl.getServiceReferences(BundleContextImpl.java:432)
      org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:658)
      org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:634)
      org.apache.felix.scr.impl.manager.DependencyManager.enable(DependencyManager.java:551)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enableDependencyManagers(AbstractComponentManager.java:1056)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.access$700(AbstractComponentManager.java:63)
      org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.enable(AbstractComponentManager.java:1440)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:625)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:358)
      org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:384)
      org.apache.felix.scr.impl.BundleComponentActivator.enableComponent(BundleComponentActivator.java:395)
      org.apache.felix.scr.impl.manager.ComponentContextImpl.enableComponent(ComponentContextImpl.java:101)
      test.scr.Main$EnableManager$1.run(Main.java:66)
      java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 54 : name: pool-1-thread-25 State: BLOCKED
      LockInfo: org.apache.felix.framework.ServiceRegistry@ae533a LockOwnerId: 15 LockOwnerName: SCR Component Actor
      org.apache.felix.framework.ServiceRegistry.getServiceReferences(ServiceRegistry.java:204)
      org.apache.felix.framework.Felix.getServiceReferences(Felix.java:3372)
      org.apache.felix.framework.Felix.getAllowedServiceReferences(Felix.java:3445)
      org.apache.felix.framework.BundleContextImpl.getServiceReferences(BundleContextImpl.java:432)
      org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:658)
      org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:634)
      org.apache.felix.scr.impl.manager.DependencyManager.enable(DependencyManager.java:551)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enableDependencyManagers(AbstractComponentManager.java:1056)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.access$700(AbstractComponentManager.java:63)
      org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.enable(AbstractComponentManager.java:1440)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:625)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:358)
      org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:384)
      org.apache.felix.scr.impl.BundleComponentActivator.enableComponent(BundleComponentActivator.java:395)
      org.apache.felix.scr.impl.manager.ComponentContextImpl.enableComponent(ComponentContextImpl.java:101)
      test.scr.Main$EnableManager$1.run(Main.java:66)
      java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 53 : name: pool-1-thread-24 State: BLOCKED
      LockInfo: org.apache.felix.framework.ServiceRegistry@ae533a LockOwnerId: 15 LockOwnerName: SCR Component Actor
      org.apache.felix.framework.ServiceRegistry.getServiceReferences(ServiceRegistry.java:204)
      org.apache.felix.framework.Felix.getServiceReferences(Felix.java:3372)
      org.apache.felix.framework.Felix.getAllowedServiceReferences(Felix.java:3445)
      org.apache.felix.framework.BundleContextImpl.getServiceReferences(BundleContextImpl.java:432)
      org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:658)
      org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:634)
      org.apache.felix.scr.impl.manager.DependencyManager.enable(DependencyManager.java:551)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enableDependencyManagers(AbstractComponentManager.java:1056)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.access$700(AbstractComponentManager.java:63)
      org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.enable(AbstractComponentManager.java:1440)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:625)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:358)
      org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:384)
      org.apache.felix.scr.impl.BundleComponentActivator.enableComponent(BundleComponentActivator.java:395)
      org.apache.felix.scr.impl.manager.ComponentContextImpl.enableComponent(ComponentContextImpl.java:101)
      test.scr.Main$EnableManager$1.run(Main.java:66)
      java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 52 : name: pool-1-thread-23 State: BLOCKED
      LockInfo: org.apache.felix.framework.ServiceRegistry@ae533a LockOwnerId: 15 LockOwnerName: SCR Component Actor
      org.apache.felix.framework.ServiceRegistry.getServiceReferences(ServiceRegistry.java:204)
      org.apache.felix.framework.Felix.getServiceReferences(Felix.java:3372)
      org.apache.felix.framework.Felix.getAllowedServiceReferences(Felix.java:3445)
      org.apache.felix.framework.BundleContextImpl.getServiceReferences(BundleContextImpl.java:432)
      org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:658)
      org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:634)
      org.apache.felix.scr.impl.manager.DependencyManager.enable(DependencyManager.java:551)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enableDependencyManagers(AbstractComponentManager.java:1056)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.access$700(AbstractComponentManager.java:63)
      org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.enable(AbstractComponentManager.java:1440)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:625)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:358)
      org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:384)
      org.apache.felix.scr.impl.BundleComponentActivator.enableComponent(BundleComponentActivator.java:395)
      org.apache.felix.scr.impl.manager.ComponentContextImpl.enableComponent(ComponentContextImpl.java:101)
      test.scr.Main$EnableManager$1.run(Main.java:66)
      java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 51 : name: pool-1-thread-22 State: BLOCKED
      LockInfo: org.apache.felix.framework.ServiceRegistry@ae533a LockOwnerId: 15 LockOwnerName: SCR Component Actor
      org.apache.felix.framework.ServiceRegistry.getServiceReferences(ServiceRegistry.java:204)
      org.apache.felix.framework.Felix.getServiceReferences(Felix.java:3372)
      org.apache.felix.framework.Felix.getAllowedServiceReferences(Felix.java:3445)
      org.apache.felix.framework.BundleContextImpl.getServiceReferences(BundleContextImpl.java:432)
      org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:658)
      org.apache.felix.scr.impl.manager.DependencyManager.getFrameworkServiceReferences(DependencyManager.java:634)
      org.apache.felix.scr.impl.manager.DependencyManager.enable(DependencyManager.java:551)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enableDependencyManagers(AbstractComponentManager.java:1056)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.access$700(AbstractComponentManager.java:63)
      org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.enable(AbstractComponentManager.java:1440)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:625)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:358)
      org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:384)
      org.apache.felix.scr.impl.BundleComponentActivator.enableComponent(BundleComponentActivator.java:395)
      org.apache.felix.scr.impl.manager.ComponentContextImpl.enableComponent(ComponentContextImpl.java:101)
      test.scr.Main$EnableManager$1.run(Main.java:66)
      java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 50 : name: pool-1-thread-21 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 49 : name: pool-1-thread-20 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 48 : name: pool-1-thread-19 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 47 : name: pool-1-thread-18 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 46 : name: pool-1-thread-17 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 45 : name: pool-1-thread-16 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 44 : name: pool-1-thread-15 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 43 : name: pool-1-thread-14 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 42 : name: pool-1-thread-13 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 41 : name: pool-1-thread-12 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 40 : name: pool-1-thread-11 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 28 : name: pool-1-thread-10 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 27 : name: pool-1-thread-9 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 26 : name: pool-1-thread-8 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 25 : name: pool-1-thread-7 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 24 : name: pool-1-thread-6 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 23 : name: pool-1-thread-5 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 22 : name: pool-1-thread-4 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 21 : name: pool-1-thread-3 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 20 : name: pool-1-thread-2 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 19 : name: pool-1-thread-1 State: WAITING
      LockInfo: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@15d17d7 LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
      java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
      java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
      java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 17 : name: Thread-2 State: TIMED_WAITING
      LockInfo: java.util.concurrent.CountDownLatch$Sync@ba5bdb LockOwnerId: -1 LockOwnerName: null
      sun.misc.Unsafe.park(Native Method)
      java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)
      java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1011)
      java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1303)
      java.util.concurrent.CountDownLatch.await(CountDownLatch.java:253)
      test.scr.Main.run(Main.java:157)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 16 : name: Thread-1 State: WAITING
      LockInfo: java.util.ArrayList@e49dcd LockOwnerId: -1 LockOwnerName: null
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      org.apache.felix.log.LogListenerThread.run(LogListenerThread.java:139)

      ThreadId: 15 : name: SCR Component Actor State: RUNNABLE
      LockInfo: null LockOwnerId: -1 LockOwnerName: null
      sun.management.ThreadImpl.dumpThreads0(Native Method)
      sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:433)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.dumpThreads(AbstractComponentManager.java:294)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.logLockingInfo(AbstractComponentManager.java:240)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.releaseReadLock(AbstractComponentManager.java:222)
      org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:706)
      org.apache.felix.framework.ServiceRegistrationImpl.ungetFactoryUnchecked(ServiceRegistrationImpl.java:349)
      org.apache.felix.framework.ServiceRegistrationImpl.ungetService(ServiceRegistrationImpl.java:258)
      org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:389)
      org.apache.felix.framework.Felix.ungetService(Felix.java:3494)
      org.apache.felix.framework.BundleContextImpl.ungetService(BundleContextImpl.java:486)
      org.apache.felix.scr.impl.manager.DependencyManager.ungetService(DependencyManager.java:900)
      org.apache.felix.scr.impl.manager.DependencyManager.unbind(DependencyManager.java:1138)
      org.apache.felix.scr.impl.manager.DependencyManager.close(DependencyManager.java:970)
      org.apache.felix.scr.impl.manager.ImmediateComponentManager.disposeImplementationObject(ImmediateComponentManager.java:274)
      org.apache.felix.scr.impl.manager.ImmediateComponentManager.deleteComponent(ImmediateComponentManager.java:147)
      org.apache.felix.scr.impl.manager.AbstractComponentManager$Active.ungetService(AbstractComponentManager.java:1697)
      org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:692)
      org.apache.felix.framework.ServiceRegistrationImpl.ungetFactoryUnchecked(ServiceRegistrationImpl.java:349)
      org.apache.felix.framework.ServiceRegistrationImpl.ungetService(ServiceRegistrationImpl.java:258)
      org.apache.felix.framework.ServiceRegistry.ungetService(ServiceRegistry.java:389)
      org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:158)
      org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:779)
      org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1382)
      org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1644)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:635)
      org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:375)
      org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:217)
      org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
      org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
      org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
      org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4327)
      org.apache.felix.framework.Felix.access$000(Felix.java:74)
      org.apache.felix.framework.Felix$1.serviceChanged(Felix.java:390)
      org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:148)
      org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:779)
      org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1382)
      org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.deactivate(AbstractComponentManager.java:1456)
      org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:635)
      org.apache.felix.scr.impl.manager.AbstractComponentManager$2.run(AbstractComponentManager.java:435)
      org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:98)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 14 : name: Gogo shell State: RUNNABLE
      LockInfo: null LockOwnerId: -1 LockOwnerName: null
      java.io.FileInputStream.readBytes(Native Method)
      java.io.FileInputStream.read(FileInputStream.java:220)
      java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
      java.io.BufferedInputStream.read(BufferedInputStream.java:237)
      org.apache.felix.gogo.runtime.threadio.ThreadInputStream.read(ThreadInputStream.java:77)
      org.apache.felix.gogo.shell.Console.getLine(Console.java:117)
      org.apache.felix.gogo.shell.Console.run(Console.java:53)
      org.apache.felix.gogo.shell.Shell.console(Shell.java:203)
      org.apache.felix.gogo.shell.Shell.gosh(Shell.java:128)
      sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      java.lang.reflect.Method.invoke(Method.java:597)
      org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:137)
      org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)
      org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)
      org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)
      org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
      org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
      org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
      org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
      org.apache.felix.gogo.shell.Activator.run(Activator.java:75)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 13 : name: CM Event Dispatcher State: WAITING
      LockInfo: java.util.LinkedList@13c0b53 LockOwnerId: -1 LockOwnerName: null
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:77)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 12 : name: CM Configuration Updater State: WAITING
      LockInfo: java.util.LinkedList@10b9279 LockOwnerId: -1 LockOwnerName: null
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:77)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 11 : name: FelixStartLevel State: WAITING
      LockInfo: java.util.ArrayList@bd6a5f LockOwnerId: -1 LockOwnerName: null
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:273)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 10 : name: FelixDispatchQueue State: WAITING
      LockInfo: java.util.ArrayList@192a848 LockOwnerId: -1 LockOwnerName: null
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      org.apache.felix.framework.util.EventDispatcher.run(EventDispatcher.java:1063)
      org.apache.felix.framework.util.EventDispatcher.access$000(EventDispatcher.java:54)
      org.apache.felix.framework.util.EventDispatcher$1.run(EventDispatcher.java:101)
      java.lang.Thread.run(Thread.java:662)

      ThreadId: 4 : name: Signal Dispatcher State: RUNNABLE
      LockInfo: null LockOwnerId: -1 LockOwnerName: null

      ThreadId: 3 : name: Finalizer State: WAITING
      LockInfo: java.lang.ref.ReferenceQueue$Lock@16614e7 LockOwnerId: -1 LockOwnerName: null
      java.lang.Object.wait(Native Method)
      java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
      java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
      java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

      ThreadId: 2 : name: Reference Handler State: WAITING
      LockInfo: java.lang.ref.Reference$Lock@e66f56 LockOwnerId: -1 LockOwnerName: null
      java.lang.Object.wait(Native Method)
      java.lang.Object.wait(Object.java:485)
      java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)

      ThreadId: 1 : name: main State: WAITING
      LockInfo: org.apache.felix.framework.util.ThreadGate@979e8b LockOwnerId: -1 LockOwnerName: null
      java.lang.Object.wait(Native Method)
      org.apache.felix.framework.util.ThreadGate.await(ThreadGate.java:79)
      org.apache.felix.framework.Felix.waitForStop(Felix.java:983)
      org.apache.felix.main.Main.main(Main.java:299)
      log level: 1 D=Mon Sep 24 11:07:45 CEST 2012, T=Thread-1: ServiceRegistrationImpl: Error ungetting service.
      java.lang.IllegalMonitorStateException
      at java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryReleaseShared(ReentrantReadWriteLock.java:363)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.releaseShared(AbstractQueuedSynchronizer.java:1317)
      at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock(ReentrantReadWriteLock.java:745)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$JLock.unlockReadLock(AbstractComponentManager.java:1895)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager.releaseReadLock(AbstractComponentManager.java:218)
      at org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:706)
      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:3494)
      at org.apache.felix.framework.BundleContextImpl.ungetService(BundleContextImpl.java:486)
      at org.apache.felix.scr.impl.manager.DependencyManager.ungetService(DependencyManager.java:900)
      at org.apache.felix.scr.impl.manager.DependencyManager.unbind(DependencyManager.java:1138)
      at org.apache.felix.scr.impl.manager.DependencyManager.close(DependencyManager.java:970)
      at org.apache.felix.scr.impl.manager.ImmediateComponentManager.disposeImplementationObject(ImmediateComponentManager.java:274)
      at org.apache.felix.scr.impl.manager.ImmediateComponentManager.deleteComponent(ImmediateComponentManager.java:147)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$Active.ungetService(AbstractComponentManager.java:1697)
      at org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:692)
      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.ServiceRegistry.unregisterService(ServiceRegistry.java:158)
      at org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:779)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1382)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1644)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:635)
      at org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:375)
      at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:217)
      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:4327)
      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:779)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1382)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.deactivate(AbstractComponentManager.java:1456)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:635)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$2.run(AbstractComponentManager.java:435)
      at org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:98)
      at java.lang.Thread.run(Thread.java:662)

      2) we also have this IllegalStateException:
      ==============================

      log level: 1 D=Mon Sep 24 11:07:45 CEST 2012, T=Thread-1: ServiceRegistrationImpl: Error ungetting service.
      java.lang.IllegalStateException: ungetServiceUnsatisfied
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.ungetService(AbstractComponentManager.java:1336)
      at org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:692)
      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:3494)
      at org.apache.felix.framework.BundleContextImpl.ungetService(BundleContextImpl.java:486)
      at org.apache.felix.scr.impl.manager.DependencyManager.ungetService(DependencyManager.java:900)
      at org.apache.felix.scr.impl.manager.DependencyManager.unbind(DependencyManager.java:1138)
      at org.apache.felix.scr.impl.manager.DependencyManager.close(DependencyManager.java:970)
      at org.apache.felix.scr.impl.manager.ImmediateComponentManager.disposeImplementationObject(ImmediateComponentManager.java:274)
      at org.apache.felix.scr.impl.manager.ImmediateComponentManager.deleteComponent(ImmediateComponentManager.java:147)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$Active.ungetService(AbstractComponentManager.java:1697)
      at org.apache.felix.scr.impl.manager.ImmediateComponentManager.ungetService(ImmediateComponentManager.java:692)
      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.ServiceRegistry.unregisterService(ServiceRegistry.java:158)
      at org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:127)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:779)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1382)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$Satisfied.deactivate(AbstractComponentManager.java:1644)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:635)
      at org.apache.felix.scr.impl.manager.DependencyManager.serviceRemoved(DependencyManager.java:375)
      at org.apache.felix.scr.impl.manager.DependencyManager.serviceChanged(DependencyManager.java:217)
      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:4327)
      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:779)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$State.doDeactivate(AbstractComponentManager.java:1382)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$Disabled.deactivate(AbstractComponentManager.java:1456)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:635)
      at org.apache.felix.scr.impl.manager.AbstractComponentManager$2.run(AbstractComponentManager.java:435)
      at org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:98)
      at java.lang.Thread.run(Thread.java:662)

      3) An exception when getting a service from a Reference:
      ==============================================

      log level: 2 D=Mon Sep 24 11:07:45 CEST 2012, T=Thread-1: [A] Could not get service from ref [test.scr.F]

      Can you please confirm that you also see these exceptions ?
      Thanks.

      Attachments

        1. serial-executor.tgz
          2 kB
          Pierre De Rop
        2. integration_test_FELIX_3880_2.tgz
          9 kB
          Pierre De Rop
        3. FELIX-3680-concurrent-activate.diff
          5 kB
          David Jencks
        4. logs_with_could_not_get_service_from_ref.txt.gz
          708 kB
          Pierre De Rop
        5. test_with_fwk.tgz
          1.84 MB
          Pierre De Rop
        6. test.scr.tgz
          22 kB
          Pierre De Rop

        Issue Links

          Activity

            People

              djencks David Jencks
              pderop Pierre De Rop
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: