Restore SIGCHLD to SIG_DFL where we care about waitpid().
authorJunio C Hamano <junkio@cox.net>
Tue, 20 Jun 2006 01:25:21 +0000 (18:25 -0700)
committerJunio C Hamano <junkio@cox.net>
Tue, 20 Jun 2006 01:44:58 +0000 (18:44 -0700)
commitf0b7367cb124a628b80697f5ed095c5859022e21
tree5a7d667c5985adb52169ec8de065bbf39a3641b8
parentd281786fcd6d0df47dd46e415f1a804b2e81ed9b
Restore SIGCHLD to SIG_DFL where we care about waitpid().

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: Junio C Hamano <junkio@cox.net>
connect.c
daemon.c
merge-index.c