diff -r 237b2883cbd8 -r f2d13eb85198 mercurial/worker.py --- a/mercurial/worker.py Thu Nov 17 20:44:05 2016 +0900 +++ b/mercurial/worker.py Thu Nov 17 21:08:58 2016 +0900 @@ -119,9 +119,10 @@ st = _exitstatus(st) if st and not problem[0]: problem[0] = st - killworkers() def sigchldhandler(signum, frame): waitforworkers(blocking=False) + if problem[0]: + killworkers() oldchldhandler = signal.signal(signal.SIGCHLD, sigchldhandler) for pargs in partition(args, workers): pid = os.fork()