about summary refs log tree commit diff
path: root/Test
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
parent7a79f660db07283c25205af38a4a9fd8618db4d5 (diff)
downloadzsh-c3114a7735c85b79771e08bd156470bde1a36950.tar.gz
zsh-c3114a7735c85b79771e08bd156470bde1a36950.tar.xz
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')
-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