diff -r bb5d74a35477 -r 03f7d0822ec1 mercurial/worker.py --- a/mercurial/worker.py Mon Dec 17 20:46:09 2018 +0900 +++ b/mercurial/worker.py Tue Dec 11 22:34:07 2018 +0900 @@ -213,11 +213,7 @@ waitforworkers() signal.signal(signal.SIGCHLD, oldchldhandler) selector.close() - status = problem[0] - if status: - if status < 0: - os.kill(os.getpid(), -status) - sys.exit(status) + return problem[0] try: openpipes = len(pipes) while openpipes > 0: @@ -236,7 +232,11 @@ killworkers() cleanup() raise - cleanup() + status = cleanup() + if status: + if status < 0: + os.kill(os.getpid(), -status) + sys.exit(status) def _posixexitstatus(code): '''convert a posix exit status into the same form returned by