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

Clement Escoffier resolved FELIX-4386.
--------------------------------------

       Resolution: Fixed
    Fix Version/s: ipojo-runtime-1.11.1

I've fixed it in the trunk.

The description field does not need to have synchronized accesses.

Could you check ?

> Deadlock while creating composite instances programatically
> -----------------------------------------------------------
>
>                 Key: FELIX-4386
>                 URL: https://issues.apache.org/jira/browse/FELIX-4386
>             Project: Felix
>          Issue Type: Bug
>          Components: iPOJO
>    Affects Versions: ipojo-composite-1.8.4
>            Reporter: Patricio Barletta
>            Assignee: Clement Escoffier
>            Priority: Critical
>             Fix For: ipojo-runtime-1.11.1
>
>
> DEADLOCK DETECTED:
> ==================
> [deadlocked thread] [iPOJO] pool-1-thread-1:
> -------------------------------------------
> Thread '[iPOJO] pool-1-thread-1' is waiting to acquire lock 
> 'org.apache.felix.ipojo.composite.CompositeFactory@4b61f9d9' that is held by 
> thread '[ACTIVE] ExecuteThread: '2'
> Stack trace:
> ------------
>       
> org.apache.felix.ipojo.IPojoFactory.getComponentDescription(IPojoFactory.java:371)
>       
> org.apache.felix.ipojo.composite.instance.InstanceHandler.__M_bindFactory(InstanceHandler.java:179)
>       
> org.apache.felix.ipojo.composite.instance.InstanceHandler.bindFactory(InstanceHandler.java)
>       sun.reflect.GeneratedMethodAccessor149.invoke(Unknown Source)
>       
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       java.lang.reflect.Method.invoke(Method.java:597)
>       org.apache.felix.ipojo.util.Callback.call(Callback.java:260)
>       
> org.apache.felix.ipojo.handlers.dependency.DependencyCallback.callOnInstance(DependencyCallback.java:303)
>       
> org.apache.felix.ipojo.handlers.dependency.Dependency.invokeCallback(Dependency.java:340)
>       
> org.apache.felix.ipojo.handlers.dependency.Dependency.onObjectCreation(Dependency.java:290)
>       
> org.apache.felix.ipojo.handlers.dependency.DependencyHandler.__M_onCreation(DependencyHandler.java:524)
>       
> org.apache.felix.ipojo.handlers.dependency.DependencyHandler.onCreation(DependencyHandler.java)
>       org.apache.felix.ipojo.HandlerManager.start(HandlerManager.java:132)
>       
> org.apache.felix.ipojo.composite.CompositeManager.start(CompositeManager.java:355)
>       
> org.apache.felix.ipojo.composite.CompositeFactory.createInstance(CompositeFactory.java:146)
>       
> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:319)
>       
> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:240)
>       
> foo.activator.DeployInstanceActivator$1.addingService(DeployInstanceActivator.java:43)
>       
> org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
>       
> org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:864)
>       
> org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
>       org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
>       
> org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:894)
>       
> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
>       
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
>       
> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
>       org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4419)
>       org.apache.felix.framework.Felix.registerService(Felix.java:3423)
>       
> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
>       org.apache.felix.ipojo.IPojoFactory.start(IPojoFactory.java:686)
>       
> org.apache.felix.ipojo.extender.internal.linker.ManagedType$ExtensionSupport$1.call(ManagedType.java:229)
>       
> org.apache.felix.ipojo.extender.internal.linker.ManagedType$ExtensionSupport$1.call(ManagedType.java:216)
>       
> org.apache.felix.ipojo.extender.internal.queue.JobInfoCallable.call(JobInfoCallable.java:114)
>       java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>       java.util.concurrent.FutureTask.run(FutureTask.java:138)
>       
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
>       
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
>       java.lang.Thread.run(Thread.java:662)
> [deadlocked thread] [ACTIVE] ExecuteThread: '2'
> --------------------------------------------------------------------------------------------------
> Thread '[ACTIVE] ExecuteThread: '2' waiting to acquire lock 
> 'org.apache.felix.ipojo.composite.CompositeFactory@d5a3c39' that is held by 
> thread '[iPOJO] pool-1-thread-1'
> Stack trace:
> ------------
>       
> org.apache.felix.ipojo.IPojoFactory.getComponentDescription(IPojoFactory.java:371)
>       
> org.apache.felix.ipojo.composite.instance.InstanceHandler.__M_bindFactory(InstanceHandler.java:179)
>       
> org.apache.felix.ipojo.composite.instance.InstanceHandler.bindFactory(InstanceHandler.java)
>       sun.reflect.GeneratedMethodAccessor149.invoke(Unknown Source)
>       
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       java.lang.reflect.Method.invoke(Method.java:597)
>       org.apache.felix.ipojo.util.Callback.call(Callback.java:260)
>       
> org.apache.felix.ipojo.handlers.dependency.DependencyCallback.callOnInstance(DependencyCallback.java:303)
>       
> org.apache.felix.ipojo.handlers.dependency.Dependency.invokeCallback(Dependency.java:340)
>       
> org.apache.felix.ipojo.handlers.dependency.Dependency.onObjectCreation(Dependency.java:290)
>       
> org.apache.felix.ipojo.handlers.dependency.DependencyHandler.__M_onCreation(DependencyHandler.java:524)
>       
> org.apache.felix.ipojo.handlers.dependency.DependencyHandler.onCreation(DependencyHandler.java)
>       org.apache.felix.ipojo.HandlerManager.start(HandlerManager.java:132)
>       
> org.apache.felix.ipojo.composite.CompositeManager.start(CompositeManager.java:355)
>       
> org.apache.felix.ipojo.composite.CompositeFactory.createInstance(CompositeFactory.java:146)
>       
> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:319)
>       
> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:240)
>       
> foo.activator.DeployInstanceActivator$1.addingService(DeployInstanceActivator.java:43)
>       
> org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)
>       
> org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:864)
>       
> org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
>       
> org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
>       org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)
>       org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)
>       
> foo.activator.DeployInstanceActivator.start(DeployInstanceActivator.java:74)
>       
> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645)
>       org.apache.felix.framework.Felix.activateBundle(Felix.java:2146)
>       org.apache.felix.framework.Felix.startBundle(Felix.java:2064)
>       org.apache.felix.framework.Felix.updateBundle(Felix.java:2404)
>       org.apache.felix.framework.BundleImpl.update(BundleImpl.java:973)
>       ...
> > 



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to