##// END OF EJS Templates
worker: fix a race in SIGINT handling...
Bryan O'Sullivan -
r18708:86524a70 default
parent child Browse files
Show More
@@ -75,9 +75,12 b' def worker(ui, costperarg, func, statica'
75 75 def _posixworker(ui, func, staticargs, args):
76 76 rfd, wfd = os.pipe()
77 77 workers = _numworkers(ui)
78 oldhandler = signal.getsignal(signal.SIGINT)
79 signal.signal(signal.SIGINT, signal.SIG_IGN)
78 80 for pargs in partition(args, workers):
79 81 pid = os.fork()
80 82 if pid == 0:
83 signal.signal(signal.SIGINT, oldhandler)
81 84 try:
82 85 os.close(rfd)
83 86 for i, item in func(*(staticargs + (pargs,))):
@@ -87,8 +90,6 b' def _posixworker(ui, func, staticargs, a'
87 90 os._exit(255)
88 91 os.close(wfd)
89 92 fp = os.fdopen(rfd, 'rb', 0)
90 oldhandler = signal.getsignal(signal.SIGINT)
91 signal.signal(signal.SIGINT, signal.SIG_IGN)
92 93 def cleanup():
93 94 # python 2.4 is too dumb for try/yield/finally
94 95 signal.signal(signal.SIGINT, oldhandler)
General Comments 0
You need to be logged in to leave comments. Login now