[
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.