Bug#493016: libc6: ldd doesn't work with ACLs
$ echo "test -r ./pdficon" | strace /bin/sh -x
execve("/bin/sh", ["/bin/sh", "-x"], [/* 19 vars */]) = 0
uname({sys="Linux", node="varaha", ...}) = 0
brk(0) = 0x80f3000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb7f70000
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=20607, ...}) = 0
mmap2(NULL, 20607, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f6a000
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\200\345"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=263040, ...}) = 0
mmap2(NULL, 264196, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0xb7f29000
mmap2(0xb7f61000, 32768, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x38) = 0xb7f61000
mmap2(0xb7f69000, 2052, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f69000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
open("/lib/tls/i686/cmov/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\0\20\f\0"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=9592, ...}) = 0
mmap2(NULL, 12404, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0)
= 0xb7f25000
mmap2(0xb7f27000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7f27000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
open("/lib/tls/i686/cmov/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\240O\1"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1241392, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb7f24000
mmap2(NULL, 1247388, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0xb7df3000
mmap2(0xb7f1a000, 28672, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x127) = 0xb7f1a000
mmap2(0xb7f21000, 10396, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f21000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb7df2000
mprotect(0xb7f1a000, 20480, PROT_READ) = 0
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7df26c0,
limit:1048575, seg_32bit:1, contents:0, read_exec_only:0,
limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0xb7f6a000, 20607) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
open("/dev/tty", O_RDWR|O_NONBLOCK|O_LARGEFILE) = 3
close(3) = 0
brk(0) = 0x80f3000
brk(0x80f4000) = 0x80f4000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1209120, ...}) = 0
mmap2(NULL, 1209120, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7cca000
close(3) = 0
brk(0x80f5000) = 0x80f5000
brk(0x80f6000) = 0x80f6000
getuid32() = 1000
getgid32() = 1000
geteuid32() = 1000
getegid32() = 1000
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
time(NULL) = 1217982213
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfe1fe38) = -1 EINVAL (Invalid
argument)
brk(0x80f7000) = 0x80f7000
open("/etc/mtab", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=691, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb7f6f000
read(3, "/dev/mapper/varaha-root / ext3 r"..., 4096) = 691
close(3) = 0
munmap(0xb7f6f000, 4096) = 0
open("/proc/meminfo", 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) = 0xb7f6f000
read(3, "MemTotal: 2075444 kB\nMemFre"..., 1024) = 676
close(3) = 0
munmap(0xb7f6f000, 4096) = 0
brk(0x80f8000) = 0x80f8000
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, [], 8) = 0
rt_sigaction(SIGQUIT, {SIG_IGN}, {SIG_DFL}, 8) = 0
uname({sys="Linux", node="varaha", ...}) = 0
brk(0x80f9000) = 0x80f9000
stat64("/srv/ccdl.libraries.claremont.edu/Content4.3/bin",
{st_mode=S_IFDIR|0770, st_size=4096, ...}) = 0
stat64(".", {st_mode=S_IFDIR|0770, st_size=4096, ...}) = 0
getpid() = 13351
open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=21568, ...}) = 0
mmap2(NULL, 21568, PROT_READ, MAP_SHARED, 3, 0) = 0xb7f6a000
close(3) = 0
getppid() = 13350
getpgrp() = 13349
rt_sigaction(SIGCHLD, {0x807acd0, [], 0}, {SIG_DFL}, 8) = 0
brk(0x80fa000) = 0x80fa000
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
fcntl64(0, F_GETFL) = 0 (flags O_RDONLY)
fstat64(0, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
_llseek(0, 0, 0xbfe1fde0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
read(0, "t", 1) = 1
brk(0x80fb000) = 0x80fb000
read(0, "e", 1) = 1
read(0, "s", 1) = 1
read(0, "t", 1) = 1
read(0, " ", 1) = 1
read(0, "-", 1) = 1
read(0, "r", 1) = 1
read(0, " ", 1) = 1
read(0, ".", 1) = 1
read(0, "/", 1) = 1
read(0, "p", 1) = 1
read(0, "d", 1) = 1
read(0, "f", 1) = 1
read(0, "i", 1) = 1
read(0, "c", 1) = 1
read(0, "o", 1) = 1
read(0, "n", 1) = 1
read(0, "\n", 1) = 1
write(2, "+ test -r ./pdficon\n", 20+ test -r ./pdficon
) = 20
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
stat64("./pdficon", {st_mode=S_IFREG|0770, st_size=17209, ...}) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
read(0, "", 1) = 0
exit_group(0) = ?
Process 13351 detached
--
Thank You
Jefferson Cowart
Network and Systems Administrator
Libraries Information Technology
> -----Original Message-----
> From: Aurelien Jarno [mailto:aurelien@aurel32.net]
> Sent: Tuesday, August 05, 2008 05:59
> To: Jefferson Cowart
> Cc: 493016@bugs.debian.org
> Subject: Re: Bug#493016: libc6: ldd doesn't work with ACLs
>
> On Thu, Jul 31, 2008 at 01:03:19PM -0700, Jefferson Cowart wrote:
> > $ sh -x /usr/bin/ldd pdficon
> > + TEXTDOMAIN=libc
> > + TEXTDOMAINDIR=/usr/share/locale
> > + RTLDLIST='/lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2'
> > + warn=
> > + bind_now=
> > + verbose=
> > + filename_magic_regex='((^|/)lib|.so$)'
> > + test 1 -gt 0
> > + case "$1" in
> > + break
> > + add_env='LD_TRACE_LOADED_OBJECTS=1 LD_WARN= LD_BIND_NOW='
> > + add_env='LD_TRACE_LOADED_OBJECTS=1 LD_WARN= LD_BIND_NOW=
> LD_LIBRARY_VERSION=$verify_out'
> > + add_env='LD_TRACE_LOADED_OBJECTS=1 LD_WARN= LD_BIND_NOW=
> LD_LIBRARY_VERSION=$verify_out LD_VERBOSE='
> > + test '' = yes
> > + set -o pipefail
> > + case $# in
> > + single_file=t
> > + result=0
> > + for file in '"$@"'
> > + test t = t
> > + case $file in
> > + file=./pdficon
> > + test '!' -f ./pdficon
> > + test -r ./pdficon
>
> According to this debugging output, test -r thinks the file is not
> readable, that's why ldd bails out with this error message.
>
> To get more details, could you please run the following command and
> send
> me the output?
>
> echo "test -r ./pdficon" | strace /bin/sh -x
>
> --
> .''`. Aurelien Jarno | GPG: 1024D/F1BCDB73
> : :' : Debian developer | Electrical Engineer
> `. `' aurel32@debian.org | aurelien@aurel32.net
> `- people.debian.org/~aurel32 | www.aurel32.net
Reply to: