summaryrefslogtreecommitdiff
path: root/Test/A05execution.ztst
diff options
context:
space:
mode:
authorBarton E. Schaefer <schaefer@zsh.org>2013-10-26 16:11:40 -0700
committerBarton E. Schaefer <schaefer@zsh.org>2013-10-26 16:11:40 -0700
commitc3114a7735c85b79771e08bd156470bde1a36950 (patch)
treed0790ac680b930ffee6fbef2c6613959fdfd97ae /Test/A05execution.ztst
parent7a79f660db07283c25205af38a4a9fd8618db4d5 (diff)
downloadzsh-c3114a7735c85b79771e08bd156470bde1a36950.tar.gz
zsh-c3114a7735c85b79771e08bd156470bde1a36950.zip
31906: fix race-condition interaction of $pipestatus with job control
printjob() should not reference oldjobtab for job numbers unless it is being called from bin_fg(). printjob() also must not attempt to update pipestats when called from bin_fg(). acquire_pgrp() should not loop infintely if the shell is not interactive. Update the $pipestatus stress test so that it also exercises the oldjobtab repair.
Diffstat (limited to 'Test/A05execution.ztst')
-rw-r--r--Test/A05execution.ztst10
1 files changed, 8 insertions, 2 deletions
diff --git a/Test/A05execution.ztst b/Test/A05execution.ztst
index 8578016ab..ba7e02cd5 100644
--- a/Test/A05execution.ztst
+++ b/Test/A05execution.ztst
@@ -179,17 +179,23 @@
0:Status reset by starting a backgrounded command
>0
- repeat 2048; do (: | : | while false; do
+ setopt MONITOR
+ [[ -o MONITOR ]] || print -u $ZTST_fd 'Unable to change MONITOR option'
+ repeat 2048; do (return 2 |
+ return 1 |
+ while true; do
+ false
break
done;
print "${pipestatus[@]}")
ZTST_hashmark
done | sort | uniq -c | sed 's/^ *//'
0:Check whether `$pipestatus[]' behaves.
->2048 0 0 0
+>2048 2 1 0
F:This test checks for a bug in `$pipestatus[]' handling. If it breaks then
F:the bug is still there or it reappeared. See workers-29973 for details.
+ setopt MONITOR
externFunc() { awk >/dev/null 2>&1; true; }
false | true | false | true | externFunc
echo $pipestatus