comparison mercurial/commandserver.py @ 35465:3a119a423953

commandserver: unblock SIGCHLD This enables the SIGCHLD handler to work properly if some buggy program started chg server with SIGCHLD blocked. A test of this probably requires C code, but we don't have such kind of tests already. Since this is a simple and clear fix, I'm leaving it as "untested" but I did a manual test and there were no longer zombie workers. Differential Revision: https://phab.mercurial-scm.org/D1737
author Jun Wu <quark@fb.com>
date Wed, 20 Dec 2017 11:35:38 -0800
parents 414114a7c18f
children 40da2d7b4871
comparison
equal deleted inserted replaced
35464:8652ab4046e4 35465:3a119a423953
447 self._socketunlinked = None 447 self._socketunlinked = None
448 448
449 def init(self): 449 def init(self):
450 self._sock = socket.socket(socket.AF_UNIX) 450 self._sock = socket.socket(socket.AF_UNIX)
451 self._servicehandler.bindsocket(self._sock, self.address) 451 self._servicehandler.bindsocket(self._sock, self.address)
452 if util.safehasattr(util, 'unblocksignal'):
453 util.unblocksignal(signal.SIGCHLD)
452 o = signal.signal(signal.SIGCHLD, self._sigchldhandler) 454 o = signal.signal(signal.SIGCHLD, self._sigchldhandler)
453 self._oldsigchldhandler = o 455 self._oldsigchldhandler = o
454 self._socketunlinked = False 456 self._socketunlinked = False
455 457
456 def _unlinksocket(self): 458 def _unlinksocket(self):