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

Felix Meschberger updated FELIX-384:
------------------------------------

    Fix Version/s:     (was: felix-1.0.0)
                   scr-1.0.0

> 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 (SCR)
>            Reporter: Felix Meschberger
>            Assignee: Felix Meschberger
>            Priority: Critical
>             Fix For: scr-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