felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Karl Pauls" <karlpa...@gmail.com>
Subject Re: Intermittent deadlock while using declarative services in Tuscany
Date Tue, 12 Feb 2008 21:27:51 GMT
Darn, this looks like another place where we call out while holding a lock.

I'll look into it - thanks for catching this. Could you maybe create a
JIRA issue for this?

regards,

Karl

On Feb 12, 2008 10:06 PM, Rajini Sivaram <rajinisivaram@googlemail.com> wrote:
> Hello,
>
> One of my tests using declarative services hangs intermittently. The stack
> trace from a debugger shows two threads waiting for locks owned by the
> other. I am using Felix framework 1.0.3 and SCR 1.0.0. The call from the
> main thread to getService is triggered by Tuscany - I am not sure if there
> are times when it shouldn't call bundleContext.getService. But the order of
> locking in the two threads are different leading to the deadlock - is it
> something that could be fixed? The main thread owns the ServiceRegistry lock
> and is waiting for the lock on ServiceFactoryComponentManager, while the
> configuration updater owns the ServiceFactoryComponentManager lock and is
> waiting for the ServiceRegistry lock.
>
>
>
> Thread [main] (Suspended)
>    ServiceFactoryComponentManager.getService(Bundle, ServiceRegistration)
> line: 111
>    ServiceRegistrationImpl.getFactoryUnchecked(Bundle) line: 245
>    ServiceRegistrationImpl.getService(Bundle) line: 179
>    ServiceRegistry.getService(Bundle, ServiceReference) line: 238
>    Felix.getService(Bundle, ServiceReference) line: 2835
>    BundleContextImpl.getService(ServiceReference) line: 417
>    .............. (Tuscany)
>
> Thread [Configuration Updater] (Suspended)
>    ServiceRegistry.unregisterService(Bundle, ServiceRegistration) line: 78
>    ServiceRegistrationImpl.unregister() line: 99
>
> ServiceFactoryComponentManager(AbstractComponentManager).unregisterComponentService()
> line: 610
>
> ServiceFactoryComponentManager(AbstractComponentManager).deactivateInternal()
> line: 464
>    ServiceFactoryComponentManager(AbstractComponentManager).reactivate()
> line: 142
>
> ServiceFactoryComponentManager(ImmediateComponentManager).reconfigure(Dictionary)
> line: 399
>    ImmediateComponentManager$1.updated(Dictionary) line: 90
>    ConfigurationManager$ManagedServiceUpdate.run() line: 863
>    UpdateThread.run() line: 89
>
>
>
>
> Thank you...
>
> Regards,
>
> Rajini
>



-- 
Karl Pauls
karlpauls@gmail.com

Mime
View raw message