On Fri, Oct 15, 2010 at 11:39:53AM +0200, Denys Vlasenko wrote:
> On Fri, Oct 15, 2010 at 2:16 AM,  <[email protected]> wrote:
> > I work for a company that uses busybox and am upgrading us to 1.17.3.
> > 'seq' has been fixed since our old version so that 'seq <n> 0 <n+1>'
> > now returns an infinite sequence of <n> rather than exiting
> > immediately.  As a result, the following testcase in seq.tests now
> > fails:
> >
> > testing "seq count by zero" "seq 4 0 8 | head -n 10" 
> > "4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n" "" ""
> >
> > The device is running an OMAP 3430 and linux 2.6.24.  When I build
> > from the same source tree and .config file for my Ubuntu
> > 2.6.28-19-generic x86 laptop, the test case *passes*.  Running strace
> > against busybox's seq on the two systems doesn't show much difference;
> > certainly it doesn't tell me why seq keeps running on the device once
> > write(stdout,...) starts failing.
> 
> Can you show me the strace log? I tested it here and I see:
> 
> execve("./busybox", ["./busybox", "seq", "4", "0", "5"], [/* 48 vars */]) = 0
> ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) 
> = 0
> ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0xffc535e0) = -1 EINVAL
> (Invalid argument)
> getpid()                                = 10368
> getuid32()                              = 0
> write(1, "4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n"..., 1024) = 1024
> write(1, "4", 1)                        = 1
> write(1, "\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4"..., 1024) = 1024
> write(1, "\n", 1)                       = 1
> write(1, "4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n"..., 1024) = 1024
> write(1, "4", 1)                        = 1
> write(1, "\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4"..., 1024) = 1024
> write(1, "\n", 1)                       = 1
> write(1, "4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n"..., 1024) = 1024
> write(1, "4", 1)                        = 1
> write(1, "\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4"..., 1024) = 1024
> write(1, "\n", 1)                       = 1
> write(1, "4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n"..., 1024) = 1024
> write(1, "4", 1)                        = 1
> write(1, "\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4"..., 1024)
> = -1 EPIPE (Broken pipe)
> --- SIGPIPE (Broken pipe) @ 0 (0) ---
> +++ killed by SIGPIPE +++

Sure.  Here's the command and then the results.

# strace -o /tmp/log busybox seq 4 0 8 | head -n 5
4
4
4
4
4
[ctrl-c required to exit back to shell]
# cat /tmp/log
execve("/bin/busybox", ["busybox", "seq", "4", "0", "8"], [/* 14 vars */]) = 0
brk(0)                                  = 0x73000
uname({sys="Linux", node="palm-webos", ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x35575000
access("/etc/ld.so.preload", R_OK)      = 0
open("/etc/ld.so.preload", O_RDONLY)    = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=25, ...}) = 0
mmap2(NULL, 25, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0x35576000
close(3)                                = 0
open("/usr/lib/libgoodabort.so", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\374\5\0\0004\0\0\0"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=5792, ...}) = 0
mmap2(NULL, 35140, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0x3557e000
mprotect(0x3557f000, 28672, PROT_NONE)  = 0
mmap2(0x35586000, 4096, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x35586000
close(3)                                = 0
munmap(0x35576000, 25)                  = 0
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=32244, ...}) = 0
mmap2(NULL, 32244, PROT_READ, MAP_PRIVATE, 3, 0) = 0x35587000
close(3)                                = 0
open("/lib/libm.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\0303\0\0004\0\0\0"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=509708, ...}) = 0
mmap2(NULL, 487624, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0x3558f000
mprotect(0x355fe000, 28672, PROT_NONE)  = 0
mmap2(0x35605000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6e) = 0x35605000
close(3)                                = 0
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(\0\1\0\0\0\254Q\1\0004\0\0\0"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1541545, ...}) = 0
mmap2(NULL, 1307208, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0x35607000
mprotect(0x35739000, 32768, PROT_NONE)  = 0
mmap2(0x35741000, 12288, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x132) = 0x35741000
mmap2(0x35744000, 8776, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x35744000
close(3)                                = 0
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0P&\0\0004\0\0\0"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=67350, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x35576000
mmap2(NULL, 76864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0x35747000
mprotect(0x35752000, 28672, PROT_NONE)  = 0
mmap2(0x35759000, 4096, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa) = 0x35759000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x35577000
set_tls(0x35576a90, 0x7, 0x3557d67c, 0x35577168, 0x3557d050) = 0
mprotect(0x35741000, 8192, PROT_READ)   = 0
mprotect(0x35605000, 4096, PROT_READ)   = 0
mprotect(0x3557c000, 4096, PROT_READ)   = 0
munmap(0x35587000, 32244)               = 0
getuid32()                              = 0
fstat64(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x35578000
write(1, "4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n"..., 1024) = 1024
write(1, "4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n"..., 1024) = -1 
EPIPE (Broken pipe)
--- SIGPIPE (Broken pipe) @ 0 (0) ---
write(1, "\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4"..., 1024) = -1 
EPIPE (Broken pipe)
--- SIGPIPE (Broken pipe) @ 0 (0) ---
write(1, "\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4\n4"..., 1024) = -1 
EPIPE (Broken pipe)
--- SIGPIPE (Broken pipe) @ 0 (0) ---
[ goes on forever ]

--Eric
-- 
******************************************************************************
* From the desktop of: Eric House, [email protected]                       *
*       Crosswords for Android now in beta: via the Market or xwords.sf.net  *
******************************************************************************
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to