# HG changeset patch
# User Andrey Skvortsov <andrej.skvortzov@gmail.com>
# Date 1472033212 -10800
# Node ID f7ac0d11118e77b6721e81c58c5d6931b0cc5463
# Parent  a656ccb868d40d24e17f618f4a3682fee9e4782c
fix race condition in ProcessLogger

diff -r a656ccb868d4 -r f7ac0d11118e util/ProcessLogger.py
--- a/util/ProcessLogger.py	Tue Aug 23 10:24:47 2016 +0500
+++ b/util/ProcessLogger.py	Wed Aug 24 13:06:52 2016 +0300
@@ -109,6 +109,7 @@
         self.errdata = []
         self.keyword = keyword
         self.kill_it = kill_it
+        self.startsem = Semaphore(0)        
         self.finishsem = Semaphore(0)
         self.endlock = Lock()
 
@@ -145,6 +146,7 @@
                       self.Proc.stderr,
                       self.errors)
         self.errt.start()
+        self.startsem.release()
 
 
     def output(self,v):
@@ -168,6 +170,7 @@
         self.logger.write_warning(_("exited with status %s (pid %s)\n")%(str(ecode),str(pid)))
 
     def finish(self, pid,ecode):
+        self.startsem.acquire()
         if self.timeout:
             self.timeout.cancel()
         self.exitcode = ecode
@@ -179,6 +182,7 @@
         self.finishsem.release()
 
     def kill(self,gently=True):
+        self.startsem.acquire()        
         self.outt.killed = True
         self.errt.killed = True
         if wx.Platform == '__WXMSW__':