git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Q] what to do when waitpid() returns ECHILD under signal(SIGCHLD, SIG_IGN)?
@ 2006-06-19 23:49 Junio C Hamano
  2006-06-19 23:57 ` Linus Torvalds
  2006-06-20 16:09 ` [Q] what to do when waitpid() returns ECHILD under signal(SIGCHLD, SIG_IGN)? Edgar Toernig
  0 siblings, 2 replies; 7+ messages in thread
From: Junio C Hamano @ 2006-06-19 23:49 UTC (permalink / raw)
  To: git; +Cc: Linus Torvalds

Somebody I met last week in Japan reported that the socks client
he uses to cross the firewall to connect to git:// port from his
company environment seems to do signal(SIGCHLD, SIG_IGN) before
spawning git.  When "git clone" is invoked this way, we get a
mysterious failure.

I can reproduce the problem without using funny socks client
like this:

        : gitster; trap '' SIGCHLD
        : gitster; git clone git://git.kernel.org/pub/scm/git/git.git/ foo.git
        error: waitpid failed (No child processes)
        fetch-pack from 'git://git.kernel.org/pub/scm/git/git.git/' failed.
        : gitster; ls foo.git
        ls: foo.git: No such file or directory

We could work this around by having signal(SIGCHLD, SIG_DFL)
upfront in git.c::main(), but I am wondering what the standard
practice for programs that use waitpid() call.  Do they protect
themselves from this in order to reliably obtain child exit
status?  Or do they simply consider it is a user error to run a
program that use waitpid() with SIGCHLD ignored?

http://www.opengroup.org/onlinepubs/009695399/functions/waitpid.html

explicitly says this is an expected behaviour, so barfing upon
ECHILD sounds like a bug on our part.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2006-06-20 16:09 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-19 23:49 [Q] what to do when waitpid() returns ECHILD under signal(SIGCHLD, SIG_IGN)? Junio C Hamano
2006-06-19 23:57 ` Linus Torvalds
2006-06-20  0:36   ` Junio C Hamano
2006-06-20  0:44     ` Linus Torvalds
2006-06-20  3:11       ` [PATCH] Restore SIGCHLD to SIG_DFL where we care about waitpid() Junio C Hamano
2006-06-20 12:59         ` Petr Baudis
2006-06-20 16:09 ` [Q] what to do when waitpid() returns ECHILD under signal(SIGCHLD, SIG_IGN)? Edgar Toernig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).