• J
    Restore SIGCHLD to SIG_DFL where we care about waitpid(). · f0b7367c
    Junio C Hamano 提交于
    It was reported that under one implementation of socks client
    "git clone" fails with "error: waitpid failed (No child processes)",
    because "git" is spawned after setting SIGCHLD to SIG_IGN.
    
    Arguably it may be a broken setting, but we should protect
    ourselves so that we can get reliable results from waitpid() for
    the children we care about.
    
    This patch resets SIGCHLD to SIG_DFL in three places:
    
     - connect.c::git_connect() - initiators of git native
       protocol transfer are covered with this.
    
     - daemon.c::main() - obviously.
    
     - merge-index.c::main() - obviously.
    
    There are other programs that do fork() but do not waitpid():
    http-push, imap-send.  upload-pack does not either, but in the
    case of that program, each of the forked halves runs exec()
    another program, so this change would not have much effect
    there.
    Signed-off-by: NJunio C Hamano <junkio@cox.net>
    f0b7367c
daemon.c 16.4 KB