bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: failed test for coreutils-5.2.1 rm fail-eperm on parc-sun-solaris2.9


From: Bert Fischer
Subject: Re: failed test for coreutils-5.2.1 rm fail-eperm on parc-sun-solaris2.9
Date: Thu, 16 Sep 2004 19:11:41 +0200

Paul Eggert writes:
 > Bert Fischer <address@hidden> writes:
 > 
 > > It is probably not a bug, but you might be interested anyway. Running
 > > `make check' after building coreutils-5.2.1 I get a failed test for rm. 
 > 
 > Odd; "make check" works for me with coreutils-5.2.1 on Solaris 9 (sparc).

As far as I understand, the test succeeds if there are no ordinary
files in one of the sticky directories that are owned by others. In
fact the test also succeeds if the first ordinary file that is owned
by somebody else is not writeable by all. After some iterations I had
to run `touch /tmp/.aaa; chmod og+w /tmp/.aaa' as root and then run
the test as a non-priveleged user to reproduce the result.

 > Can you please try running the following:
 > 
 > cd coreutils-5.2.1/tests/rm
 > truss -f -o /tmp/tr make TESTS=fail-eperm check-TESTS
 > 
 > and then send us the relevant snippets of /tmp/tr?  We need to see the
 > system calls just before the time that "rm" unexpectedly succeeded.

,----[ /tmp/tr ]
| ...
| 970:  brk(0x0003A438)                                 = 0
| 970:  brk(0x0003C438)                                 = 0
| 970:  read(0, 0x0002FFCC, 8192)                       = 0
| 970:  stat64("/tmp", 0xFF39D278)                      = 0
| 970:  getgroups(32, 0xFFBFECB0)                       = 1
| 970:  getgroups(32, 0xFFBFECB0)                       = 1
| 970:  getgroups(32, 0xFFBFECB0)                       = 1
| 970:  brk(0x0003C438)                                 = 0
| 970:  brk(0x0003E438)                                 = 0
| 970:  open("/tmp", O_RDONLY|O_NDELAY|O_LARGEFILE)     = 3
| 970:  fstat64(3, 0xFFBFECF8)                          = 0
| 970:  fcntl(3, F_SETFD, 0x00000001)                   = 0
| 970:  getdents64(3, 0x0003BE10, 8192)                 = 464
| 970:  getdents64(3, 0x0003BE10, 8192)                 = 0
| 970:  lstat64("/tmp/.", 0xFF39D278)                   = 0
| 970:  lstat64("/tmp/..", 0xFF39D278)                  = 0
| 970:  lstat64("/tmp/.X11-unix", 0xFF39D278)           = 0
| 970:  lstat64("/tmp/.X11-pipe", 0xFF39D278)           = 0
| 970:  lstat64("/tmp/speckeysd.lock", 0xFF39D278)      = 0
| 970:  lstat64("/tmp/dtdbcache_:0", 0xFF39D278)        = 0
| 970:  lstat64("/tmp/.removable", 0xFF39D278)          = 0
| 970:  lstat64("/tmp/sdtvolcheck437", 0xFF39D278)      = 0
| 970:  lstat64("/tmp/fischer", 0xFF39D278)             = 0
| 970:  lstat64("/tmp/sh747.2", 0xFF39D278)             = 0
| 970:  lstat64("/tmp/sh747.3", 0xFF39D278)             = 0
| 970:  lstat64("/tmp/orbit-fischer", 0xFF39D278)       = 0
| 970:  lstat64("/tmp/.esd", 0xFF39D278)                = 0
| 970:  lstat64("/tmp/tr", 0xFF39D278)                  = 0
| 970:  lstat64("/tmp/.aaa", 0xFF39D278)                = 0
| 970:  llseek(0, 0, SEEK_CUR)                          = 2029
| 970:  pipe()                                          = 4 [9]
| 970:  pipe()                                          = 10 [11]
| 970:  fork()                                          = 976
| 976:  fork()          (returning as child ...)        = 970
| 976:  close(4)                                        = 0
| 976:  close(10)                                       = 0
| 976:  fcntl(11, F_SETFD, 0x00000001)                  = 0
| 976:  fcntl(9, F_DUP2FD, 0x00000001)                  = 1
| 976:  close(9)                                        = 0
| 976:  fcntl(1, F_DUP2FD, 0x00000002)                  = 2
| 976:  execve("/home/fischer/tmp/coreutils-5.2.1/tests/rm/../../src/rm", 
0x0003E210, 0x00029C50)  argc = 3
| 976:  resolvepath("/home/fischer/tmp/coreutils-5.2.1/src/rm", 
"/home/fischer/tmp/coreutils-5.2.1/src/rm", 1023) = 40
| 976:  resolvepath("/usr/lib/ld.so.1", "/usr/lib/ld.so.1", 1023) = 16
| 976:  stat("/home/fischer/tmp/coreutils-5.2.1/src/rm", 0xFFBFEDF8) = 0
| 976:  open("/var/ld/ld.config", O_RDONLY)             Err#2 ENOENT
| 976:  stat("/usr/lib/libgen.so.1", 0xFFBFE73C)        = 0
| 976:  open("/usr/lib/libgen.so.1", O_RDONLY)          = 3
| 976:  fstat(3, 0xFFBFE73C)                            = 0
| 976:  mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 
0xFF3B0000
| 976:  mmap(0x00000000, 98304, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 
0xFF390000
| 976:  mmap(0xFF3A6000, 2343, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED, 3, 24576) = 0xFF3A6000
| 976:  munmap(0xFF396000, 65536)                       = 0
| 976:  resolvepath("/usr/lib/libgen.so.1", "/usr/lib/libgen.so.1", 1023) = 20
| 976:  memcntl(0xFF390000, 6304, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
| 976:  close(3)                                        = 0
| 976:  stat("/usr/lib/libnsl.so.1", 0xFFBFE73C)        = 0
| 976:  open("/usr/lib/libnsl.so.1", O_RDONLY)          = 3
| 976:  fstat(3, 0xFFBFE73C)                            = 0
| 976:  mmap(0xFF3B0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 
0) = 0xFF3B0000
| 976:  mmap(0x00000000, 712704, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 
0xFF280000
| 976:  mmap(0xFF31E000, 32732, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED, 3, 581632) = 0xFF31E000
| 976:  mmap(0xFF326000, 30936, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF326000
| 976:  munmap(0xFF30E000, 65536)                       = 0
| 976:  resolvepath("/usr/lib/libnsl.so.1", "/usr/lib/libnsl.so.1", 1023) = 20
| 976:  memcntl(0xFF280000, 82168, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
| 976:  close(3)                                        = 0
| 976:  stat("/usr/lib/libc.so.1", 0xFFBFE73C)          = 0
| 976:  open("/usr/lib/libc.so.1", O_RDONLY)            = 3
| 976:  fstat(3, 0xFFBFE73C)                            = 0
| 976:  mmap(0xFF3B0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 
0) = 0xFF3B0000
| 976:  mmap(0x00000000, 802816, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 
0xFF180000
| 976:  mmap(0xFF23C000, 24464, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED, 3, 704512) = 0xFF23C000
| 976:  mmap(0xFF242000, 6644, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF242000
| 976:  munmap(0xFF22C000, 65536)                       = 0
| 976:  mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF380000
| 976:  resolvepath("/usr/lib/libc.so.1", "/usr/lib/libc.so.1", 1023) = 18
| 976:  memcntl(0xFF180000, 117288, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
| 976:  close(3)                                        = 0
| 976:  stat("/usr/lib/libc.so.1", 0xFFBFE73C)          = 0
| 976:  stat("/usr/lib/libdl.so.1", 0xFFBFE73C)         = 0
| 976:  open("/usr/lib/libdl.so.1", O_RDONLY)           = 3
| 976:  fstat(3, 0xFFBFE73C)                            = 0
| 976:  mmap(0xFF3B0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 
0) = 0xFF3B0000
| 976:  resolvepath("/usr/lib/libdl.so.1", "/usr/lib/libdl.so.1", 1023) = 19
| 976:  close(3)                                        = 0
| 976:  stat("/usr/lib/libc.so.1", 0xFFBFE73C)          = 0
| 976:  stat("/usr/lib/libmp.so.2", 0xFFBFE73C)         = 0
| 976:  open("/usr/lib/libmp.so.2", O_RDONLY)           = 3
| 976:  fstat(3, 0xFFBFE73C)                            = 0
| 976:  mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 
0xFF370000
| 976:  mmap(0x00000000, 90112, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 
0xFF350000
| 976:  mmap(0xFF364000, 849, PROT_READ|PROT_WRITE|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED, 3, 16384) = 0xFF364000
| 976:  munmap(0xFF354000, 65536)                       = 0
| 976:  resolvepath("/usr/lib/libmp.so.2", "/usr/lib/libmp.so.2", 1023) = 19
| 976:  memcntl(0xFF350000, 2464, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
| 976:  close(3)                                        = 0
| 976:  stat("/usr/lib/libdl.so.1", 0xFFBFE73C)         = 0
| 976:  stat("/usr/lib/libc.so.1", 0xFFBFE73C)          = 0
| 976:  stat("/usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1", 0xFFBFE54C) = 0
| 976:  open("/usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1", O_RDONLY) = 3
| 976:  fstat(3, 0xFFBFE54C)                            = 0
| 976:  mmap(0xFF370000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 
0) = 0xFF370000
| 976:  mmap(0x00000000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 
0xFF340000
| 976:  resolvepath("/usr/platform/sun4u/lib/libc_psr.so.1c_psr.so.1", 
"/usr/platform/sun4u/lib/libc_psr.so.1", 1023) = 37
| 976:  close(3)                                        = 0
| 976:  munmap(0xFF370000, 8192)                        = 0
| 976:  getustack(0xFFBFEC64)
| 976:  getrlimit(RLIMIT_STACK, 0xFFBFEC5C)             = 0
| 976:  getcontext(0xFFBFEA98)
| 976:  setustack(0xFF24397C)
| 976:  ioctl(0, TCGETA, 0xFFBFEEA4)                    Err#25 ENOTTY
| 976:  brk(0x00029DD8)                                 = 0
| 976:  brk(0x0002BDD8)                                 = 0
| 976:  brk(0x0002BDD8)                                 = 0
| 976:  brk(0x0002DDD8)                                 = 0
| 976:  lstat64("/tmp/.aaa", 0xFFBFED98)                = 0
| 976:  unlink("/tmp/.aaa")                             = 0
| 976:  _exit(0)
| 970:  close(9)                                        = 0
| 970:  close(11)                                       = 0
| 970:  read(10, 0xFFBFEBCC, 4)                         = 0
| 970:  close(10)                                       = 0
| ...
`----

 > I see you're running as "root".  Do things change if you run as
 > an ordinary user?

In fact, I was running the test as an ordinary user. If I try to run
this test as root I only get the following:

,----[ test run as root ]
| # cd /home/fischer/tmp/core*/tests/rm
| # /usr/local/bin/make TESTS=fail-eperm check-TESTS   
| ./fail-eperm: /home/fischer/tmp/coreutils-5.2.1/tests/rm: not writable by 
user 
| nobody'
| ./fail-eperm: skipping this test
| SKIP: fail-eperm
| ======================
| All 0 tests passed
| (1 tests were not run)
| ======================
`----

 > What filesystems are "." and "/tmp" on your host?
`.' is on an ufs partition and /tmp seems to be tmpfs. 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]