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