Debian Bug report logs - #382798
bash echo builtin fails on EINTR (I think)

version graph

Package: bash; Maintainer for bash is Matthias Klose <doko@debian.org>; Source for bash is src:bash (PTS, buildd, popcon).

Reported by: Ian Jackson <ian@davenant.greenend.org.uk>

Date: Sun, 13 Aug 2006 13:33:11 UTC

Severity: normal

Found in version bash/2.05b-2-26

Reply or subscribe to this bug.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, Matthias Klose <doko@debian.org>:
Bug#382798; Package bash. (full text, mbox, link).


Acknowledgement sent to Ian Jackson <ian@davenant.greenend.org.uk>:
New Bug report received and forwarded. Copy sent to Matthias Klose <doko@debian.org>. (full text, mbox, link).


Message #5 received at submit@bugs.debian.org (full text, mbox, reply):

From: Ian Jackson <ian@davenant.greenend.org.uk>
To: submit@bugs.debian.org
Subject: bash echo builtin fails on EINTR (I think)
Date: Sun, 13 Aug 2006 14:24:34 +0100
Package: bash
Version: 2.05b-26

The script below should always exit with status 4.  However, sometimes
one of the invocations of echo returns a nonzero status.  My strace
suggests that this is due to improper handling of EINTR.

Ian.

-davenant:d> cat ~/junk/t.sh
#!/bin/sh
set -xe

exitstatus=0

l=`seq 1 20`
for cn in $l; do
        echo "expire $cn"
        sleep foo -- $cn &
        jobs="$jobs $!"
done

echo "postloop $jobs" || exit 18

for job in $jobs; do
        wait $job || exitstatus=4
done

if [ $exitstatus = 0 ]; then
        echo "complete" || exit 19
else
        echo "complete, but problems" || exit 20
fi

exit $exitstatus
-davenant:d> strace -ot ~/junk/t.sh
+ exitstatus=0
++ seq 1 20
+ l=1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
+ echo 'expire 1'
expire 1
+ sleep foo -- 1
+ jobs= 21182
+ echo 'expire 2'
expire 2
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 2
+ jobs= 21182 21183
+ echo 'expire 3'
expire 3
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 3
+ jobs= 21182 21183 21184
+ echo 'expire 4'
expire 4
+ sleep foo -- 4
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ jobs= 21182 21183 21184 21185
sleep: invalid time interval `foo'
+ echo 'expire 5'
Try `sleep --help' for more information.
expire 5
+ sleep foo -- 5
+ jobs= 21182 21183 21184 21185 21186
+ echo 'expire 6'
expire 6
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 6
+ jobs= 21182 21183 21184 21185 21186 21187
+ echo 'expire 7'
expire 7
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 7
+ jobs= 21182 21183 21184 21185 21186 21187 21188
+ echo 'expire 8'
expire 8
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 8
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189
+ echo 'expire 9'
expire 9
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 9
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189 21190
+ echo 'expire 10'
expire 10
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 10
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191
+ echo 'expire 11'
expire 11
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 11
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192
+ echo 'expire 12'
expire 12
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 12
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192 21193
+ echo 'expire 13'
expire 13
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 13
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192 21193 21194
+ echo 'expire 14'
expire 14
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 14
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192 21193 21194 21195
+ echo 'expire 15'
expire 15
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 15
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192 21193 21194 21195 21196
+ echo 'expire 16'
expire 16
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 16
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192 21193 21194 21195 21196 21197
+ echo 'expire 17'
expire 17
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 17
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192 21193 21194 21195 21196 21197 21198
+ echo 'expire 18'
expire 18
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ sleep foo -- 18
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192 21193 21194 21195 21196 21197 21198 21199
+ echo 'expire 19'
expire 19
sleep: invalid time interval `foo'
+ sleep foo -- 19
Try `sleep --help' for more information.
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192 21193 21194 21195 21196 21197 21198 21199 21200
+ echo 'expire 20'
sleep: invalid time interval `foo'expire 20

Try `sleep --help' for more information.
+ sleep foo -- 20
+ jobs= 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192 21193 21194 21195 21196 21197 21198 21199 21200 21201
sleep: invalid time interval `foo'
Try `sleep --help' for more information.
+ echo 'postloop  21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192 21193 21194 21195 21196 21197 21198 21199 21200 21201'
+ exit 18
-davenant:d> less t
-davenant:d> cat t
execve("/u/ian/junk/t.sh", ["/u/ian/junk/t.sh"], [/* 45 vars */]) = 0
uname({sys="Linux", node="davenant", ...}) = 0
brk(0)                                  = 0x80e5d14
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40017000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=63676, ...}) = 0
old_mmap(NULL, 63676, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40018000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libncurses.so.5", O_RDONLY)  = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\342"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=252592, ...}) = 0
old_mmap(NULL, 257868, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40028000
old_mmap(0x4005e000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x35000) = 0x4005e000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libdl.so.2", O_RDONLY)       = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\34\0\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=9872, ...}) = 0
old_mmap(NULL, 8632, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40067000
old_mmap(0x40069000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) = 0x40069000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360^\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1244752, ...}) = 0
old_mmap(NULL, 1254916, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4006a000
old_mmap(0x40192000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x127000) = 0x40192000
old_mmap(0x4019a000, 9732, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4019a000
close(3)                                = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4019d000
munmap(0x40018000, 63676)               = 0
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
open("/dev/tty", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 3
close(3)                                = 0
brk(0)                                  = 0x80e5d14
brk(0)                                  = 0x80e5d14
brk(0x80e6000)                          = 0x80e6000
brk(0)                                  = 0x80e6000
brk(0x80e7000)                          = 0x80e7000
getuid32()                              = 100
getgid32()                              = 100
geteuid32()                             = 100
getegid32()                             = 100
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
time(NULL)                              = 1155474897
brk(0)                                  = 0x80e7000
brk(0x80e8000)                          = 0x80e8000
brk(0)                                  = 0x80e8000
brk(0x80e9000)                          = 0x80e9000
open("/etc/mtab", O_RDONLY)             = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=503, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
read(3, "/dev/hda2 / ext3 rw 0 0\nproc /pr"..., 4096) = 503
close(3)                                = 0
munmap(0x40018000, 4096)                = 0
open("/proc/meminfo", O_RDONLY)         = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
read(3, "        total:    used:    free:"..., 4096) = 523
close(3)                                = 0
munmap(0x40018000, 4096)                = 0
brk(0)                                  = 0x80e9000
brk(0x80ea000)                          = 0x80ea000
rt_sigaction(SIGCHLD, {SIG_DFL}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGCHLD, {SIG_DFL}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGINT, {SIG_DFL}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGINT, {SIG_DFL}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGQUIT, {SIG_DFL}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGQUIT, {SIG_DFL}, {SIG_DFL}, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
rt_sigaction(SIGQUIT, {SIG_IGN}, {SIG_DFL}, 8) = 0
uname({sys="Linux", node="davenant", ...}) = 0
brk(0)                                  = 0x80ea000
brk(0x80eb000)                          = 0x80eb000
stat64("/u/ian/junk/d", {st_mode=S_IFDIR|S_ISGID|0775, st_size=2312, ...}) = 0
stat64(".", {st_mode=S_IFDIR|S_ISGID|0775, st_size=2312, ...}) = 0
getpid()                                = 21180
getppid()                               = 21179
brk(0)                                  = 0x80eb000
brk(0x80ec000)                          = 0x80ec000
getpgrp()                               = 21179
rt_sigaction(SIGCHLD, {0x8076f20, [], SA_RESTORER, 0x40093678}, {SIG_DFL}, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
open("/u/ian/junk/t.sh", O_RDONLY|O_LARGEFILE) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbffff7ac) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(3, 0, [0], SEEK_CUR)            = 0
read(3, "#!/bin/sh\nset -xe\n\nexitstatus=0\n"..., 80) = 80
_llseek(3, 0, [0], SEEK_SET)            = 0
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024}) = 0
dup2(3, 255)                            = 255
close(3)                                = 0
fcntl64(255, F_SETFD, FD_CLOEXEC)       = 0
fcntl64(255, F_GETFL)                   = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat64(255, {st_mode=S_IFREG|0775, st_size=338, ...}) = 0
_llseek(255, 0, [0], SEEK_CUR)          = 0
brk(0)                                  = 0x80ec000
brk(0x80ed000)                          = 0x80ed000
brk(0)                                  = 0x80ed000
brk(0x80ee000)                          = 0x80ee000
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
read(255, "#!/bin/sh\nset -xe\n\nexitstatus=0\n"..., 338) = 338
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
write(2, "+ exitstatus=0\n", 15)        = 15
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
pipe([3, 4])                            = 0
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
_llseek(255, -292, [46], SEEK_CUR)      = 0
fork()                                  = 21181
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
rt_sigaction(SIGCHLD, {0x8076f20, [], SA_RESTORER, 0x40093678}, {0x8076f20, [], SA_RESTORER, 0x40093678}, 8) = 0
close(4)                                = 0
read(3, "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14"..., 128) = 51
read(3, "", 128)                        = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG) = 21181
waitpid(-1, 0xbffff214, WNOHANG)        = -1 ECHILD (No child processes)
sigreturn()                             = ? (mask now [RTMIN])
close(3)                                = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigaction(SIGINT, {0x8075fa0, [], SA_RESTORER, 0x40093678}, {SIG_DFL}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
rt_sigaction(SIGINT, {SIG_DFL}, {0x8075fa0, [], SA_RESTORER, 0x40093678}, 8) = 0
write(2, "+ l=1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n1"..., 52) = 52
write(2, "20\n", 3)                     = 3
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
read(255, "for cn in $l; do\n\techo \"expire $"..., 338) = 292
brk(0)                                  = 0x80ee000
brk(0x80ef000)                          = 0x80ef000
write(2, "+ echo \'expire 1\'\n", 18)   = 18
write(1, "expire 1\n", 9)               = 9
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
_llseek(255, -214, [124], SEEK_CUR)     = 0
fork()                                  = 21182
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182\n", 14)         = 14
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 2\'\n", 18)   = 18
write(1, "expire 2\n", 9)               = 9
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21183
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21182
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183\n", 20)   = 20
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 3\'\n", 18)   = 18
write(1, "expire 3\n", 9)               = 9
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21184
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21183
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184\n", 26) = 26
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 4\'\n", 18)   = 18
write(1, "expire 4\n", 9)               = 9
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21185
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21184
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185\n", 32) = 32
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 5\'\n", 18)   = 18
write(1, "expire 5\n", 9)               = 9
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21186
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21185
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 38) = 38
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 6\'\n", 18)   = 18
write(1, "expire 6\n", 9)               = 9
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21187
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21186
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 44) = 44
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 7\'\n", 18)   = 18
write(1, "expire 7\n", 9)               = 9
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21188
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21187
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 50) = 50
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 8\'\n", 18)   = 18
write(1, "expire 8\n", 9)               = 9
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21189
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21188
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 56) = 56
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 9\'\n", 18)   = 18
write(1, "expire 9\n", 9)               = 9
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21190
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21189
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 62) = 62
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 10\'\n", 19)  = 19
write(1, "expire 10\n", 10)             = 10
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21191
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21190
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
brk(0)                                  = 0x80ef000
brk(0x80f0000)                          = 0x80f0000
write(2, "+ jobs= 21182 21183 21184 21185 "..., 68) = 68
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 11\'\n", 19)  = 19
write(1, "expire 11\n", 10)             = 10
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21192
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21191
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 74) = 74
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 12\'\n", 19)  = 19
write(1, "expire 12\n", 10)             = 10
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21193
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21192
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 80) = 80
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 13\'\n", 19)  = 19
write(1, "expire 13\n", 10)             = 10
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21194
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21193
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 86) = 86
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 14\'\n", 19)  = 19
write(1, "expire 14\n", 10)             = 10
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21195
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21194
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 92) = 92
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 15\'\n", 19)  = 19
write(1, "expire 15\n", 10)             = 10
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21196
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21195
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 98) = 98
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 16\'\n", 19)  = 19
write(1, "expire 16\n", 10)             = 10
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21197
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21196
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 104) = 104
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 17\'\n", 19)  = 19
write(1, "expire 17\n", 10)             = 10
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21198
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21197
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 110) = 110
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 18\'\n", 19)  = 19
write(1, "expire 18\n", 10)             = 10
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21199
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21198
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 116) = 116
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 19\'\n", 19)  = 19
write(1, "expire 19\n", 10)             = 10
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21200
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21199
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 122) = 122
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ echo \'expire 20\'\n", 19)  = 19
write(1, "expire 20\n", 10)             = 10
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [RTMIN], 8) = 0
fork()                                  = 21201
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21200
waitpid(-1, 0xbffff24c, WNOHANG)        = 0
sigreturn()                             = ? (mask now [RTMIN])
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
write(2, "+ jobs= 21182 21183 21184 21185 "..., 128) = 128
rt_sigprocmask(SIG_BLOCK, [CHLD], [RTMIN], 8) = 0
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
read(255, "\necho \"postloop $jobs\" || exit 1"..., 338) = 214
rt_sigprocmask(SIG_BLOCK, NULL, [RTMIN], 8) = 0
brk(0)                                  = 0x80f0000
brk(0x80f1000)                          = 0x80f1000
write(2, "+ echo \'postloop  21182 21183 21"..., 139) = 139
write(1, "postloop  21182 21183 21184 2118"..., 130) = ? ERESTARTSYS (To be restarted)
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], WNOHANG) = 21201
waitpid(-1, 0xbffff2fc, WNOHANG)        = -1 ECHILD (No child processes)
sigreturn()                             = ? (mask now [RTMIN])
write(2, "+ exit 18\n", 10)             = 10
rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
exit_group(18)                          = ?
-davenant:d>



Information forwarded to debian-bugs-dist@lists.debian.org, Matthias Klose <doko@debian.org>:
Bug#382798; Package bash. (full text, mbox, link).


Acknowledgement sent to Ian Jackson <ian@davenant.greenend.org.uk>:
Extra info received and forwarded to list. Copy sent to Matthias Klose <doko@debian.org>. (full text, mbox, link).


Message #10 received at 382798@bugs.debian.org (full text, mbox, reply):

From: Ian Jackson <ian@davenant.greenend.org.uk>
To: 341282@bugs.debian.org, 382798@bugs.debian.org
Subject: Similar to #382798 ?
Date: Sun, 13 Aug 2006 15:12:12 +0100
Looking through existing bug reports for something similar to my
freshly reported problem #382798 (bash builtin echo fails to cope with
signals arriving at the wrong moment), #341282 seems like a related
problem.  It may even have the same root cause.

Ian.



Information forwarded to debian-bugs-dist@lists.debian.org, Matthias Klose <doko@debian.org>:
Bug#382798; Package bash. (full text, mbox, link).


Acknowledgement sent to Ian Jackson <ian@davenant.greenend.org.uk>:
Extra info received and forwarded to list. Copy sent to Matthias Klose <doko@debian.org>. (full text, mbox, link).


Message #15 received at 382798@bugs.debian.org (full text, mbox, reply):

From: Ian Jackson <ian@davenant.greenend.org.uk>
To: 332881@bugs.debian.org, 382798@bugs.debian.org
Subject: Related to #382798 ?
Date: Sun, 13 Aug 2006 15:12:23 +0100
Looking through existing bug reports for something similar to my
freshly reported problem #382798 (bash builtin echo fails to cope with
signals arriving at the wrong moment) I suspect that #332881 has the
same root cause:

* Note that the the (useless) use of <(cat ...), twice, causes two
  subprocesses which will run asynchronously with the cmp.
* If one or both of these subprocesses terminate at the right moment,
  just as `echo' is executing, echo's write(2) is interrupted.  This
  causes (I suspect) echo to fail.
* Since the script has no `set -e' (a serious mistake by the
  submitter) it carries on blithely, despite the lost output.

Ian.



Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Wed Dec 6 08:58:00 2023; Machine Name: buxtehude

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.