[ 
https://issues.apache.org/jira/browse/FELIX-4313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13821151#comment-13821151
 ] 

Guillaume Nodet commented on FELIX-4313:
----------------------------------------

Proposed patch (under test)

{code}
diff --git 
a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java 
b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
index 99a87cf..c78f69b 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
@@ -979,15 +979,17 @@ public class DependencyManager<S, T> implements Reference
 
         public void close()
         {
+            RefPair<T> ref;
             synchronized ( getTracker().tracked() )
             {
-                if ( refPair != null )
-                {
-                    ungetService( refPair );
-                }
+                ref = refPair;
                 refPair = null;
-                getTracker().deactivate();
             }
+            if ( ref != null )
+            {
+                ungetService( ref );
+            }
+            getTracker().deactivate();
         }
 
         public Collection<RefPair<T>> getRefs( AtomicInteger trackingCount )
{code}

> Bad synchronization in scr where a lock is held while ungetting a service
> -------------------------------------------------------------------------
>
>                 Key: FELIX-4313
>                 URL: https://issues.apache.org/jira/browse/FELIX-4313
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>    Affects Versions: scr-1.8.0
>            Reporter: Guillaume Nodet
>            Assignee: Guillaume Nodet
>            Priority: Minor
>             Fix For: scr-1.8.2
>
>
> The problem is located in DependencyManeger$SingleStaticCustomizer.close()



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to