freebsd-skq/bin/sh
Jilles Tjoelker 1794251add sh: Fix EINTR race condition in "wait" and "set -T" using sigsuspend().
When waiting for child processes using "wait" or if "set -T" is in effect, a
signal interrupts the wait. Make sure there is no window where the signal
handler may be invoked (setting a flag) just before going to sleep.

There is a similar race condition in the shell language, but scripts can
avoid it by exiting from the trap handler or enforcing synchronization using
a fifo.

If SIGCHLD is not trapped, a signal handler must be installed for it. Only
install this handler for the duration of the wait to avoid triggering
unexpected [EINTR] errors elsewhere.

Note that for some reason only SIGINT and SIGQUIT interrupt a "wait"
command. This remains the case.
2012-07-29 18:04:38 +00:00
..
bltin sh: Fix duplicate prototypes for builtins. 2011-06-13 21:03:27 +00:00
funcs sh: Remove "kill" example function, which is superseded by the kill builtin 2012-01-21 20:39:17 +00:00
alias.c sh: Fix duplicate prototypes for builtins. 2011-06-13 21:03:27 +00:00
alias.h sh: Fix duplicate prototypes for builtins. 2011-06-13 21:03:27 +00:00
arith_yacc.c Add prototypes, ANSIfy functions definitions to reduce WARNS=6 output. 2012-01-25 08:42:19 +00:00
arith_yacc.h sh: Import arithmetic expression code from dash. 2011-02-08 23:18:06 +00:00
arith_yylex.c Add prototypes, ANSIfy functions definitions to reduce WARNS=6 output. 2012-01-25 08:42:19 +00:00
arith.h sh: Fix duplicate prototypes for builtins. 2011-06-13 21:03:27 +00:00
builtins.def sh: Remove the "exp" builtin. 2011-05-27 20:53:07 +00:00
cd.c sh: Properly show "Not a directory" error in cd builtin. 2012-01-13 23:32:27 +00:00
cd.h sh: Fix duplicate prototypes for builtins. 2011-06-13 21:03:27 +00:00
error.c sh: Add a function to print warnings (with command name and newline). 2010-12-21 20:47:06 +00:00
error.h sh: Allow EV_EXIT through function calls, make {...} <redir more consistent. 2011-04-23 22:28:56 +00:00
eval.c sh: Expand assignment-like words specially for export/readonly/local. 2012-07-15 10:19:43 +00:00
eval.h sh: Fix execution of multiple statements in a trap when evalskip is set 2012-01-16 11:07:46 +00:00
exec.c sh: Expand assignment-like words specially for export/readonly/local. 2012-07-15 10:19:43 +00:00
exec.h sh: Expand assignment-like words specially for export/readonly/local. 2012-07-15 10:19:43 +00:00
expand.c sh: Make various functions static. 2012-01-01 22:17:12 +00:00
expand.h sh: Make various functions static. 2012-01-01 22:17:12 +00:00
histedit.c Add prototypes, ANSIfy functions definitions to reduce WARNS=6 output. 2012-01-25 08:42:19 +00:00
init.h sh: Remove special code for shell scripts without magic number. 2011-02-04 22:47:55 +00:00
input.c Merge libedit adjustment from NetBSD. 2012-07-11 22:17:58 +00:00
input.h sh: Make various functions static. 2012-01-01 22:17:12 +00:00
jobs.c sh: Fix EINTR race condition in "wait" and "set -T" using sigsuspend(). 2012-07-29 18:04:38 +00:00
jobs.h sh: Remove unused variable in_dowait. 2012-07-15 10:49:16 +00:00
mail.c Consistently use "STATIC" for all functions in order to be able to set 2010-10-13 04:01:01 +00:00
mail.h
main.c sh: Make various functions static. 2012-01-01 22:17:12 +00:00
main.h sh: Make various functions static. 2012-01-01 22:17:12 +00:00
Makefile Work better with how make/bmake works: 2012-05-24 19:48:15 +00:00
memalloc.c sh: Follow-up to r216743, grabstackblock() can be replaced with stalloc(). 2011-01-09 22:47:58 +00:00
memalloc.h sh: Follow-up to r216743, grabstackblock() can be replaced with stalloc(). 2011-01-09 22:47:58 +00:00
miscbltin.c sh: Remove an unused header. 2012-05-15 22:50:47 +00:00
mkbuiltins Work better with how make/bmake works: 2012-05-24 19:48:15 +00:00
mkinit.c Remove duplicated header files 2011-06-24 07:29:04 +00:00
mknodes.c
mksyntax.c sh: Allow quoting ^ and ] in bracket expressions. 2011-12-28 23:51:17 +00:00
mktokens sh: Add case statement fallthrough (with ';&' instead of ';;'). 2011-06-17 13:03:49 +00:00
myhistedit.h sh: Make various functions static. 2012-01-01 22:17:12 +00:00
mystring.c sh: Remove unused function scopyn(). 2012-01-01 22:15:38 +00:00
mystring.h sh: Remove unused function scopyn(). 2012-01-01 22:15:38 +00:00
nodes.c.pat In the spirit of r90111, depend on c89 and remove the "STATIC" macro 2010-10-13 22:18:03 +00:00
nodetypes sh: Remove special support for background simple commands. 2011-06-18 23:58:59 +00:00
options.c sh: Allow unsetting OPTIND. 2011-11-20 21:48:50 +00:00
options.h sh: Add do-nothing -h option. 2011-06-18 23:43:28 +00:00
output.c sh: Use vsnprintf() rather than crafting our own in fmtstr(). 2010-12-11 17:47:27 +00:00
output.h sh: Code size optimizations to buffered output. 2010-11-20 14:14:52 +00:00
parser.c sh: Remove special support for background simple commands. 2011-06-18 23:58:59 +00:00
parser.h sh: Do parameter expansion before printing PS4 (set -x). 2011-06-09 23:12:23 +00:00
redir.c sh: Remove special code for shell scripts without magic number. 2011-02-04 22:47:55 +00:00
redir.h
sh.1 sh: Expand assignment-like words specially for export/readonly/local. 2012-07-15 10:19:43 +00:00
shell.h sh: Detect dividing the smallest integer by -1. 2011-02-12 23:44:05 +00:00
show.c In the spirit of r90111, depend on c89 and remove the "STATIC" macro 2010-10-13 22:18:03 +00:00
show.h sh: Constify various strings. 2009-12-24 18:41:14 +00:00
TOUR sh: Various updates to the TOUR document. 2011-05-27 16:00:37 +00:00
trap.c sh: Fix EINTR race condition in "wait" and "set -T" using sigsuspend(). 2012-07-29 18:04:38 +00:00
trap.h sh: Fix EINTR race condition in "wait" and "set -T" using sigsuspend(). 2012-07-29 18:04:38 +00:00
var.c sh: Fix swapped INTON/INTOFF. 2012-02-04 23:29:07 +00:00
var.h sh: Use vfork in a few common cases. 2012-02-04 23:12:14 +00:00