comparison mercurial/worker.py @ 19408:c7ec39c1a381

worker: properly report errors from worker processes (issue3982)
author Matt Mackall <mpm@selenic.com>
date Tue, 16 Jul 2013 15:18:12 -0500
parents 3185b347ae98
children 1e5b38a919dd
comparison
equal deleted inserted replaced
19407:ce3d1cf957f8 19408:c7ec39c1a381
87 for i, item in func(*(staticargs + (pargs,))): 87 for i, item in func(*(staticargs + (pargs,))):
88 os.write(wfd, '%d %s\n' % (i, item)) 88 os.write(wfd, '%d %s\n' % (i, item))
89 os._exit(0) 89 os._exit(0)
90 except KeyboardInterrupt: 90 except KeyboardInterrupt:
91 os._exit(255) 91 os._exit(255)
92 except: # re-raises (close enough for debugging anyway) 92 # other exceptions are allowed to propagate, we rely
93 try: 93 # on lock.py's pid checks to avoid release callbacks
94 ui.traceback()
95 finally:
96 os._exit(255)
97 pids.append(pid) 94 pids.append(pid)
98 pids.reverse() 95 pids.reverse()
99 os.close(wfd) 96 os.close(wfd)
100 fp = os.fdopen(rfd, 'rb', 0) 97 fp = os.fdopen(rfd, 'rb', 0)
101 def killworkers(): 98 def killworkers():