Re: Possible bug in wait4(), 2.1.126-129 ?

H. J. Lu (hjl@freya.yggdrasil.com)
Sun, 22 Nov 1998 11:25:11 -0800 (PST)


>
> On Sun, 22 Nov 1998, H. J. Lu wrote:
>
> > : `cmp -s /tmp/.mrs_8036 /etc/local/root.rdist.hosts`
> > : die "could not move $tmp_filename to $out_filename: $!" if ($? != 0);
> >
> > You need to post a small, working perl script for others to
> > duplicate the problem.
>
> The above is 'working' for me, just substitute the filenames with two

I have to add ';' at the end of the first line.

> existing filenames on your system. It really doesn't matter which files,
> as soon as I put it in crontab I get the error. In fact it doesn't matter
> what the command executes is, I got the same thing with 'cmp', 'mv' and
> 'ping'.
>

I am using Perl version 5.004_04 and glibc 2.0.7.

# cat pp
#! /usr/bin/perl

`cmp -s /tmp/foo /tmp/bar`;
die "could not move /tmp/foo to /tmp/bar: $!" if ($? != 0);
# strace pp
execve("./pp", ["pp"], [/* 23 vars */]) = 0
brk(0) = 0x80b784c
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4000c000
open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=0, st_size=0, ...}) = 0
mmap(0, 16597, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4000d000
close(3) = 0
open("/lib/libnsl.so.1", O_RDONLY) = 3
mmap(0, 4096, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40012000
munmap(0x40012000, 4096) = 0
mmap(0, 26500, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40012000
mprotect(0x40018000, 1924, PROT_NONE) = 0
mmap(0x40018000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x5000) = 0x40018000
close(3) = 0
open("/lib/libdb.so.2", O_RDONLY) = 3
mmap(0, 4096, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40019000
munmap(0x40019000, 4096) = 0
mmap(0, 61444, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40019000
mprotect(0x40027000, 4100, PROT_NONE) = 0
mmap(0x40027000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xd000) = 0x40027000
mmap(0x40028000, 4, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40028000
close(3) = 0
open("/usr/lib/libgdbm.so.2", O_RDONLY) = 3
mmap(0, 4096, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40029000
munmap(0x40029000, 4096) = 0
mmap(0, 22924, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40029000
mprotect(0x4002e000, 2444, PROT_NONE) = 0
mmap(0x4002e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x4000) = 0x4002e000
close(3) = 0
open("/lib/libdl.so.2", O_RDONLY) = 3
mmap(0, 4096, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4002f000
munmap(0x4002f000, 4096) = 0
mmap(0, 13996, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4002f000
mprotect(0x40032000, 1708, PROT_NONE) = 0
mmap(0x40032000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) = 0x40032000
close(3) = 0
open("/lib/libm.so.6", O_RDONLY) = 3
mmap(0, 4096, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40033000
munmap(0x40033000, 4096) = 0
mmap(0, 102620, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40033000
mprotect(0x4004b000, 4316, PROT_NONE) = 0
mmap(0x4004b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x17000) = 0x4004b000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
mmap(0, 4096, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4004d000
munmap(0x4004d000, 4096) = 0
mmap(0, 681488, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4004d000
mprotect(0x400e0000, 79376, PROT_NONE) = 0
mmap(0x400e0000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x92000) = 0x400e0000
mmap(0x400e7000, 50704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x400e7000
close(3) = 0
open("/lib/libcrypt.so.1", O_RDONLY) = 3
mmap(0, 4096, PROT_READ, MAP_PRIVATE, 3, 0) = 0x400f4000
munmap(0x400f4000, 4096) = 0
mmap(0, 187744, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x400f4000
mprotect(0x400fa000, 163168, PROT_NONE) = 0
mmap(0x400fa000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x5000) = 0x400fa000
mmap(0x400fb000, 159072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x400fb000
close(3) = 0
munmap(0x4000d000, 16597) = 0
personality(0 /* PER_??? */) = 0
getpid() = 12113
brk(0) = 0x80b784c
brk(0x80b7884) = 0x80b7884
brk(0x80b8000) = 0x80b8000
brk(0x80b9000) = 0x80b9000
getuid() = 1000
geteuid() = 1000
getgid() = 90
getegid() = 90
brk(0x80bb000) = 0x80bb000
time([911762735]) = 911762735
sigprocmask(SIG_BLOCK, NULL, []) = 0
brk(0x80bc000) = 0x80bc000
open(ptrace: umoven: Input/output error
0xbffffd53, O_RDONLY) = 3
fstat(3, {st_mode=0, st_size=0, ...}) = 0
brk(0x80bd000) = 0x80bd000
brk(0x80be000) = 0x80be000
brk(0x80bf000) = 0x80bf000
getpid() = 12113
brk(0x80c0000) = 0x80c0000
fstat(3, {st_mode=0, st_size=0, ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4000d000
read(3, "#! /usr/bin/perl\n\n`cmp -s /tmp"..., 4096) = 106
read(3, "", 4096) = 0
close(3) = 0
munmap(0x4000d000, 4096) = 0
sigprocmask(SIG_BLOCK, NULL, []) = 0
pipe([3, 4]) = 0
fork() = 12114
close(4) = 0
fcntl(3, F_GETFL) = 0 (flags O_RDONLY)
fstat(3, {st_mode=0, st_size=0, ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4000d000
lseek(3, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
read(3, "", 4096) = 0
--- SIGCHLD (Child exited) ---
close(3) = 0
munmap(0x4000d000, 4096) = 0
sigaction(SIGHUP, {SIG_IGN}, {SIG_IGN}) = 0
sigaction(SIGINT, {SIG_IGN}, {SIG_DFL}) = 0
sigaction(SIGQUIT, {SIG_IGN}, {SIG_DFL}) = 0
wait4(12114, [WIFEXITED(s) && WEXITSTATUS(s) == 2], 0, NULL) = 12114
sigaction(SIGHUP, {SIG_IGN}, NULL) = 0
sigaction(SIGINT, {SIG_DFL}, NULL) = 0
sigaction(SIGQUIT, {SIG_DFL}, NULL) = 0
write(2, "could not move /tmp/foo to /tmp/"..., 54could not move /tmp/foo to /tmp/bar: at ./pp line 4.
) = 54
sigprocmask(SIG_SETMASK, [], NULL) = 0
_exit(512) = ?

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/