Hi!
----
The following testcase shows that ast-ksh.2013-06-13 looses signals
(or better: Doesn't call the matching SIGRTMIN and SIGCHLD traps) when
the "sleep" builtin is used within the "wait"-loop:
-- snip --
function add_var
{
nameref n1=$1
nameref n2=$2
(( n1+=n2 ))
}
function main
{
integer -r numchildren=256
integer num_sigchld=0
integer num_sigrtmin=0
integer i
typeset jl
bool success=true
trap 'add_var num_sigrtmin .sh.sig.value' RTMIN+0
trap 'add_var num_sigrtmin .sh.sig.value' RTMIN+1
trap 'add_var num_sigrtmin .sh.sig.value' RTMIN+2
trap 'add_var num_sigrtmin .sh.sig.value' RTMIN+3
trap 'add_var num_sigchld .sh.sig.status' CHLD
for (( i=0 ; i < numchildren ; i++ )) ; do
pid=$$ ~/bin/ksh -c $'
sleep 4
kill -q 1 -s RTMIN+3 $pid
kill -q 1 -s RTMIN+2 $pid
kill -q 1 -s RTMIN+1 $pid
kill -q 1 -s RTMIN+0 $pid
exit 1
' &
done
while ! wait ; do
# sleeping while signals arrive
# triggers the bug
sleep 8
done
jl="${ LC_ALL='C' jobs -l ; }"
if (( num_sigrtmin != 4*numchildren )) ; then
(( success=false ))
printf 'Expected num_sigrtmin=%d, got %d\n' \
$((4*numchildren)) num_sigrtmin
fi
if (( num_sigchld != numchildren )) ; then
(( success=false ))
printf 'Expected num_sigchld=%d, got %d\n' \
numchildren num_sigchld
fi
if [[ "${jl}" == *Running* ]] ; then
(( success=false ))
printf '# error: job list not empty:\n%s\n' \
"${jl}"
fi
if (( success )) ; then
printf '# success.\n'
return 0
else
printf '# failure.\n'
return 1
fi
# notreached
}
main "$@"
exit $?
-- snip --
... the expected output would be a line with "success" but on SuSE
12.3/AMD64/64bit ksh93 prints:
-- snip --
$~/bin/ksh yyy
Expected num_sigchld=256, got num_sigchld=221
# failure.
$~/bin/ksh yyy
Expected num_sigrtmin=1024, got 303
# failure.
$~/bin/ksh yyy
Expected num_sigrtmin=1024, got 275
# failure.
$~/bin/ksh yyy
Expected num_sigrtmin=1024, got 304
Expected num_sigchld=256, got 255
# failure.
-- snip --
----
Bye,
Roland
--
__ . . __
(o.\ \/ /.o) [email protected]
\__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer
/O /==\ O\ TEL +49 641 3992797
(;O/ \/ \O;)
_______________________________________________
ast-developers mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-developers