Hello,
Paul Eggert suggested in
http://lists.gnu.org/archive/html/bug-coreutils/2010-07/msg00012.html
a sequence to check.
While I will need a while to get to the debugger, Pádraig Brady suggested in a
private mail: "stracing the chmod calls is probably enough."
So here is the strace, in hope that it is helpful:
<<strace.txt>>
Regards
Martin
> mkdir -p a/b/c a/b/d e
> touch a/b/c/foo a/b/d/foo
> strace cp -p --parent a/b/c/foo e
execve("/user/jm044248/tools/bin/cp", ["cp", "-p", "--parent", "a/b/c/foo",
"e"], [/* 98 vars */]) = 0
uname({sys="Linux", node="x", ...}) = 0
brk(0) = 0x8154000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=107523, ...}) = 0
old_mmap(NULL, 107523, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f6d000
close(3) = 0
open("/lib/libselinux.so.1", 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\260\220\331\0004\0\0\0"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=56328, ...}) = 0
old_mmap(0xd97000, 56144, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0)
= 0xd97000
old_mmap(0xda4000, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd000) = 0xda4000
close(3) = 0
open("/lib/tls/librt.so.1", 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\320\240\26\0004\0\0\0"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=47671, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f6c000
old_mmap(0x168000, 81656, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0)
= 0x168000
old_mmap(0x170000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x170000
old_mmap(0x172000, 40696, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x172000
close(3) = 0
open("/lib/libacl.so.1", 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\300\2\205\0004\0\0\0"..., 512)
= 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=23572, ...}) = 0
old_mmap(0x84f000, 20948, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0)
= 0x84f000
old_mmap(0x854000, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x854000
close(3) = 0
open("/lib/libattr.so.1", 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\0000\233\204\0004\0\0\0"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=26319, ...}) = 0
old_mmap(0x849000, 13504, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0)
= 0x849000
old_mmap(0x84c000, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x84c000
close(3) = 0
open("/lib/tls/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\320\336D\0004\0\0\0"..., 512)
= 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1454802, ...}) = 0
old_mmap(0x439000, 1223900, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x439000
old_mmap(0x55e000, 16384, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x124000) = 0x55e000
old_mmap(0x562000, 7388, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x562000
close(3) = 0
open("/lib/tls/libpthread.so.0", 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\210i\0004\0\0\0"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=93985, ...}) = 0
old_mmap(0x694000, 70108, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0)
= 0x694000
old_mmap(0x6a2000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd000) = 0x6a2000
old_mmap(0x6a4000, 4572, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6a4000
close(3) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f6b000
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f6a000
mprotect(0x55e000, 4096, PROT_READ) = 0
mprotect(0x430000, 4096, PROT_READ) = 0
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f6a6c0, limit:1048575,
seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0,
useable:1}) = 0
munmap(0xb7f6d000, 107523) = 0
set_tid_address(0xb7f6a708) = 25826
rt_sigaction(SIGRTMIN, {0x698380, [], SA_RESTORER|SA_SIGINFO, 0x69f890}, NULL,
8) = 0
rt_sigaction(SIGRT_1, {0x6983f0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO,
0x69f890}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0
_sysctl({{CTL_KERN, KERN_VERSION}, 2, 0xbff5edcc, 34, (nil), 0}) = 0
access("/etc/selinux/", F_OK) = 0
brk(0) = 0x8154000
brk(0x8175000) = 0x8175000
open("/etc/selinux/config", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=492, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f87000
read(3, "# This file controls the state o"..., 4096) = 492
close(3) = 0
munmap(0xb7f87000, 4096) = 0
open("/proc/mounts", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f87000
read(3, "rootfs / rootfs rw 0 0\n/proc /pr"..., 1024) = 1024
read(3, "proto=4,indirect 0 0\nautomount(p"..., 1024) = 1024
read(3, "nosuid 0 0\n/dev/mvfs /lte/C_Appl"..., 1024) = 1024
read(3, "mvfs /utran/fdd/nodeb/opt mvfs r"..., 1024) = 1024
read(3, "k,proto=tcp,tcp,timeo=600,retran"..., 1024) = 1024
read(3, " /user/dems1dm0 nfs rw,v3,rsize="..., 1024) = 1024
read(3, "acregmax=3,acdirmin=1,acdirmax=3"..., 1024) = 1024
read(3, "r/demxxqg1 nfs rw,v3,rsize=32768"..., 1024) = 1024
read(3, "e:/pvol5/xvbs4 /vob/x4"..., 1024) = 545
read(3, "", 1024) = 0
close(3) = 0
munmap(0xb7f87000, 4096) = 0
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=48528928, ...}) = 0
mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7d6a000
mmap2(NULL, 184320, PROT_READ, MAP_PRIVATE, 3, 0x11f8) = 0xb7d3d000
mmap2(NULL, 24576, PROT_READ, MAP_PRIVATE, 3, 0x1230) = 0xb7d37000
mmap2(NULL, 4096, PROT_READ, MAP_PRIVATE, 3, 0x2e04) = 0xb7d36000
close(3) = 0
open("/proc/filesystems", O_RDONLY) = 3
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 4095) = 319
close(3) = 0
geteuid32() = 33801
stat64("e", {st_mode=S_IFDIR|S_ISGID|0775, st_size=2, ...}) = 0
stat64("e/a/b/c", 0xbff5edf0) = -1 ENOENT (No such file or directory)
stat64("e/a", 0xbff5edf0) = -1 ENOENT (No such file or directory)
stat64("a", {st_mode=S_IFDIR|S_ISGID|0775, st_size=3, ...}) = 0
mkdir("e/a", 02700) = 0
lstat64("e/a", {st_mode=S_IFDIR|S_ISGID|0700, st_size=2, ...}) = 0
stat64("e/a/b", 0xbff5edf0) = -1 ENOENT (No such file or directory)
stat64("a/b", {st_mode=S_IFDIR|S_ISGID|0775, st_size=4, ...}) = 0
mkdir("e/a/b", 02700) = 0
lstat64("e/a/b", {st_mode=S_IFDIR|S_ISGID|0700, st_size=2, ...}) = 0
stat64("e/a/b/c", 0xbff5edf0) = -1 ENOENT (No such file or directory)
stat64("a/b/c", {st_mode=S_IFDIR|S_ISGID|0775, st_size=3, ...}) = 0
mkdir("e/a/b/c", 02700) = 0
lstat64("e/a/b/c", {st_mode=S_IFDIR|S_ISGID|0700, st_size=2, ...}) = 0
stat64("a/b/c/foo", {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
open("a/b/c/foo", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
open("e/a/b/c/foo", O_WRONLY|O_CREAT|O_EXCL|O_LARGEFILE, 0600) = 4
fstat64(4, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
read(3, "", 32768) = 0
utimes("/proc/self/fd/4", {{1278664666, 354040}, {1278664666, 354040}}) = 0
fgetxattr(3, "system.posix_acl_access"...,
"\x02\x00\x00\x00\x01\x00\x06\x00\xff\xff\xff\xff\x04\x00\x06\x00\xff\xff\xff\xff\x10\x00\x07\x00\xff\xff\xff\xff
\x00\x04\x00\xff\xff\xff\xff", 132) = 36
fsetxattr(4, "system.posix_acl_access"...,
"\x02\x00\x00\x00\x01\x00\x06\x00\xff\xff\xff\xff\x04\x00\x06\x00\xff\xff\xff\xff\x10\x00\x07\x00\xff\xff\xff\xff
\x00\x04\x00\xff\xff\xff\xff", 36, 0) = -1 EOPNOTSUPP (Operation not supported)
fchmod(4, 0100664) = 0
open("/usr/share/locale/locale.alias", O_RDONLY) = 5
fstat64(5, {st_mode=S_IFREG|0644, st_size=2528, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7d35000
read(5, "# Locale name alias data base.\n#"..., 4096) = 2528
read(5, "", 4096) = 0
close(5) = 0
munmap(0xb7d35000, 4096) = 0
open("/user/jm044248/tools/share/locale/en_US/LC_MESSAGES/coreutils.mo",
O_RDONLY) = -1 ENOENT (No such file or directory)
open("/user/jm044248/tools/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY)
= 5
fstat64(5, {st_mode=S_IFREG|0644, st_size=435, ...}) = 0
mmap2(NULL, 435, PROT_READ, MAP_PRIVATE, 5, 0) = 0xb7d35000
close(5) = 0
open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 5
fstat64(5, {st_mode=S_IFREG|0644, st_size=21544, ...}) = 0
mmap2(NULL, 21544, PROT_READ, MAP_SHARED, 5, 0) = 0xb7d2f000
close(5) = 0
futex(0x56114c, FUTEX_WAKE, 2147483647) = 0
open("/usr/lib/gconv/ISO8859-1.so", O_RDONLY) = 5
read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\4\0\0004\0\0\0"...,
512) = 512
fstat64(5, {st_mode=S_IFREG|0755, st_size=5336, ...}) = 0
old_mmap(NULL, 8220, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) =
0x116000
old_mmap(0x117000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0) = 0x117000
close(5) = 0
write(2, "cp: ", 4cp: ) = 4
write(2, "preserving permissions for `e/a/"..., 40preserving permissions for
`e/a/b/c/foo') = 40
open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such
file or directory)
write(2, ": Operation not supported", 25: Operation not supported) = 25
write(2, "\n", 1
) = 1
close(4) = 0
close(3) = 0
utimes("e/a/b/c", {{1278664653, 873866}, {1278664666, 259441}}) = 0
lchown32("e/a/b/c", 33801, 21049) = 0
getxattr("a/b/c", "system.posix_acl_access"..., 0xbff5eca0, 132) = -1 ENODATA
(No data available)
stat64("a/b/c", {st_mode=S_IFDIR|S_ISGID|0775, st_size=3, ...}) = 0
setxattr("e/a/b/c", "system.posix_acl_access"...,
"\x02\x00\x00\x00\x01\x00\x07\x00\xff\xff\xff\xff\x04\x00\x07\x00\xff\xff\xff\xff
\x00\x05\x00\xff\xff\xff\xff", 28, 0) = -1 EOPNOTSUPP (Operation not supported)
chmod("e/a/b/c", 042775) = 0
utimes("e/a/b", {{1278664653, 684763}, {1278664654, 821}}) = 0
lchown32("e/a/b", 33801, 21049) = 0
getxattr("a/b", "system.posix_acl_access"..., 0xbff5eca0, 132) = -1 ENODATA (No
data available)
stat64("a/b", {st_mode=S_IFDIR|S_ISGID|0775, st_size=4, ...}) = 0
setxattr("e/a/b", "system.posix_acl_access"...,
"\x02\x00\x00\x00\x01\x00\x07\x00\xff\xff\xff\xff\x04\x00\x07\x00\xff\xff\xff\xff
\x00\x05\x00\xff\xff\xff\xff", 28, 0) = -1 EOPNOTSUPP (Operation not supported)
chmod("e/a/b", 042775) = 0
utimes("e/a", {{1278664653, 463868}, {1278664653, 684805}}) = 0
lchown32("e/a", 33801, 21049) = 0
getxattr("a", "system.posix_acl_access"..., 0xbff5eca0, 132) = -1 ENODATA (No
data available)
stat64("a", {st_mode=S_IFDIR|S_ISGID|0775, st_size=3, ...}) = 0
setxattr("e/a", "system.posix_acl_access"...,
"\x02\x00\x00\x00\x01\x00\x07\x00\xff\xff\xff\xff\x04\x00\x07\x00\xff\xff\xff\xff
\x00\x05\x00\xff\xff\xff\xff", 28, 0) = -1 EOPNOTSUPP (Operation not supported)
chmod("e/a", 042775) = 0
close(0) = 0
close(1) = 0
close(2) = 0
exit_group(1) = ?