fix fork bomb when projects share object dir
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 7b44dbd..a750a23 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -249,7 +249,7 @@
                  dest='repo_upgraded', action='store_true',
                  help=SUPPRESS_HELP)
 
-  def _FetchProjectList(self, opt, projects, *args, **kwargs):
+  def _FetchProjectList(self, opt, projects, lock, fetched, pm, sem, err_event):
     """Main function of the fetch threads when jobs are > 1.
 
     Delegates most of the work to _FetchHelper.
@@ -260,10 +260,13 @@
       *args, **kwargs: Remaining arguments to pass to _FetchHelper. See the
           _FetchHelper docstring for details.
     """
-    for project in projects:
-      success = self._FetchHelper(opt, project, *args, **kwargs)
-      if not success and not opt.force_broken:
-        break
+    try:	
+      for project in projects:
+        success = self._FetchHelper(opt, project, lock, fetched, pm, sem, err_event)
+        if not success and not opt.force_broken:
+          break
+    finally:
+      sem.release() 
 
   def _FetchHelper(self, opt, project, lock, fetched, pm, sem, err_event):
     """Fetch git objects for a single project.
@@ -332,7 +335,7 @@
     finally:
       if did_lock:
         lock.release()
-      sem.release()
+      #sem.release()
 
     return success