Mercurial > public > mercurial-scm > hg
comparison mercurial/commandserver.py @ 35461: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
35460:8652ab4046e4 | 35461: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): |