Possible deadlock on framework startlevel change
------------------------------------------------

                 Key: FELIX-384
                 URL: https://issues.apache.org/jira/browse/FELIX-384
             Project: Felix
          Issue Type: Bug
          Components: Declarative Services
            Reporter: Felix Meschberger
            Assignee: Felix Meschberger
            Priority: Critical
             Fix For: 1.0.0


Felix SCR uses java synchronization on component manager instances to prevent 
synchronous execution of certain actions like activation and deactivation. In 
concert with the locking implemented by the Felix framework, deadlocks may 
occurr in certain situations.

For example: If the framework has been started but the SCR Activator queue 
still has a deadlock and the framework is instructed to shutdown.

The start level service will now stop bundles in the FelixStartLevel thread. At 
one point in time Bundle X will be stopped and the framework holds the bundle 
lock while stopping the bundle. Stopping the bundle causes a synchronous 
STOPPING event being handled by the SCR, which causes immediate deactivation of 
all components of the bundle. This causes the 
AbstractComponentManager.deactivateInternal method to be called which is 
synchronized on the instance.

At the same time, the components of Bundle X may still be scheduled for 
activation in the SCR Activator queue handled by the  SCR Component Actor 
thread. This thread may be activating a component of Bundle X trying to 
register the component as a service in the 
AbstractComponentManager.activateInternal method (synchronized on the 
instance). Registering the service tries to acquire the bundle lock first.

The result is a deadlock between the FelixStartLevel thread (holding the bundle 
lock and waiting for the component manager lock) and the SCR Component Actor 
thread (holding the component lock and waiting for the bundle lock).

While this is probably a seldom situation, it must be prevent from happening 
nevertheless.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to