Bug 242749
Summary: | ldd segfaults on 2.2.5 executables | ||||||
---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Tom London <selinux> | ||||
Component: | kernel | Assignee: | Kernel Maintainer List <kernel-maint> | ||||
Status: | CLOSED DUPLICATE | QA Contact: | Brian Brock <bbrock> | ||||
Severity: | low | Docs Contact: | |||||
Priority: | low | ||||||
Version: | rawhide | ||||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | All | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2007-06-05 21:35:45 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Description
Tom London
2007-06-05 16:37:37 UTC
Created attachment 156241 [details]
Ouput of 'strace ldd /usr/bin/vmware-ping'
Uhhh... This only happens is I run 'ldd' as root. Works fine when I run as 'ordinary' user: [tbl@localhost ~]$ ldd /usr/bin/vmware-ping linux-gate.so.1 => (0x00475000) libc.so.6 => /lib/libc.so.6 (0x45efb000) /lib/ld-linux.so.2 (0x80000000) [tbl@localhost ~]$ ldd /usr/lib/vmware/bin/vmware-vmx linux-gate.so.1 => (0x00d93000) libm.so.6 => /lib/libm.so.6 (0x46051000) libdl.so.2 => /lib/libdl.so.2 (0x4607c000) libpthread.so.0 => /lib/libpthread.so.0 (0x46098000) libc.so.6 => /lib/libc.so.6 (0x45efb000) /lib/ld-linux.so.2 (0x80000000) libX11.so.6 => /usr/lib/libX11.so.6 (0x46153000) libXtst.so.6 => /usr/lib/libXtst.so.6 (0x47285000) libXext.so.6 => /usr/lib/libXext.so.6 (0x462a5000) libXrender.so.1 => /usr/lib/libXrender.so.1 (0x463c4000) libz.so.1 => /lib/libz.so.1 (0x45924000) libXau.so.6 => /usr/lib/libXau.so.6 (0x46257000) libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x4625c000) [tbl@localhost ~]$ strace on ldd (which is a shell script) is useless, unless you use -f. Better just strace -E LD_TRACE_LOADED_OBJECTS=1 /lib/ld-linux.so.2 /usr/bin/vmware-ping Argh. Of course. Sorry. But this no longer segfaults: [root@localhost ~]# LD_TRACE_LOADED_OBJECTS=1 /lib/ld-linux.so.2 /usr/bin/vmware-ping linux-gate.so.1 => (0x00c3c000) libc.so.6 => /lib/libc.so.6 (0x45efb000) /lib/ld-linux.so.2 (0x80000000) [root@localhost ~]# Can you then retry with strace -E LD_WARN= -E LD_BIND_NOW= -E LD_LIBRARY_VERSION=`/lib/ld-linux.so.2 --verify /usr/bin/vmware-ping` -E LD_VERBOSE= /lib/ld-linux.so.2 /usr/bin/vmware-ping and also strace -E LD_WARN= -E LD_BIND_NOW= -E LD_LIBRARY_VERSION=`/lib/ld-linux.so.2 --verify /usr/bin/vmware-ping` -E LD_VERBOSE= /usr/bin/vmware-ping ? Output of strace -E LD_WARN= -E LD_BIND_NOW= -E LD_LIBRARY_VERSION=`/lib/ld-linux.so.2 --verify /usr/bin/vmware-ping` -E LD_VERBOSE= /lib/ld-linux.so.2 /usr/bin/vmware-ping [root@localhost ~]# strace -E LD_WARN= -E LD_BIND_NOW= -E LD_LIBRARY_VERSION=`/lib/ld-linux.so.2 --verify /usr/bin/vmware-ping` -E LD_VERBOSE= /lib/ld-linux.so.2 /usr/bin/vmware-ping Usage: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...] You have invoked `ld.so', the helper program for shared library executables. This program usually lives in the file `/lib/ld.so', and special directives in executable files using ELF shared libraries tell the system's program loader to load the helper program from this file. This helper program loads the shared libraries needed by the program executable, prepares the program to run, and runs it. You may invoke this helper program directly from the command line to load and run an ELF executable file; this is like executing that file itself, but always uses this helper program from the file you specified, instead of the helper program file specified in the executable file you run. This is mostly of use for maintainers to test new versions of this helper program; chances are you did not intend to run this program. --list list all dependencies and how they are resolved --verify verify that given object really is a dynamically linked object we can handle --library-path PATH use given PATH instead of content of the environment variable LD_LIBRARY_PATH --inhibit-rpath LIST ignore RUNPATH and RPATH information in object names in LIST -bash: --verify: command not found execve("/lib/ld-linux.so.2", ["/lib/ld-linux.so.2", "/usr/bin/vmware-ping"], [/* 24 vars */]) = 0 brk(0) = 0x80571000 open("/usr/bin/vmware-ping", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\2\0\3\0\1\0\0\0`\210\4"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|S_ISUID|0555, st_size=12360, ...}) = 0 mmap2(0x8048000, 12288, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x8048000 mmap2(0x804b000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0x804b000 mprotect(0xbf886000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC|PROT_GROWSDOWN) = 0 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fac000 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=78121, ...}) = 0 mmap2(NULL, 78121, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f98000 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\3\0\1\0\0\0\320\20"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1673760, ...}) = 0 mmap2(0x45efb000, 1390032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x45efb000 mmap2(0x46049000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14e) = 0x46049000 mmap2(0x4604c000, 9680, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4604c000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f97000 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f976c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 mprotect(0x46049000, 8192, PROT_READ) = 0 mprotect(0x8001b000, 4096, PROT_READ) = 0 munmap(0xb7f98000, 78121) = 0 write(2, "VMware\'s ping\n\nUsage: /usr/bin/v"..., 445VMware's ping Usage: /usr/bin/vmware-ping <hostname> : remote host [-i <seconds>] : interval (default is 1) [-t <seconds>] : timeout (default is 10) [-s <bytes>] : packet payload size (default is 56, min is 1) [-q] : quiet mode [-b] : broadcast mode Sends one request packet to the remote host every 'interval' seconds until we get a reply or 'timeout' seconds have elapsed ) = 445 exit_group(3) = ? Process 29613 detached [root@localhost ~]# Output of strace -E LD_WARN= -E LD_BIND_NOW= -E LD_LIBRARY_VERSION=`/lib/ld-linux.so.2 --verify /usr/bin/vmware-ping` -E LD_VERBOSE= /usr/bin/vmware-ping [root@localhost ~]# strace -E LD_WARN= -E LD_BIND_NOW= -E LD_LIBRARY_VERSION=`/lib/ld-linux.so.2 --verify /usr/bin/vmware-ping` -E LD_VERBOSE= /usr/bin/vmware-ping execve("/usr/bin/vmware-ping", ["/usr/bin/vmware-ping"], [/* 24 vars */]) = 0 brk(0) = 0x908b000 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=78121, ...}) = 0 mmap2(NULL, 78121, PROT_READ, MAP_PRIVATE, 3, 0) = 0x305000 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\3\0\1\0\0\0\320\20"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1673760, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x549000 mmap2(0x45efb000, 1390032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x45efb000 mmap2(0x46049000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14e) = 0x110000 --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++ Process 29631 detached [root@localhost ~]# Rerun of strace -E LD_WARN= -E LD_BIND_NOW= -E LD_LIBRARY_VERSION=`/lib/ld-linux.so.2 --verify /usr/bin/vmware-ping` -E LD_VERBOSE= /lib/ld-linux.so.2 /usr/bin/vmware-ping [root@localhost ~]# strace -E LD_WARN= -E LD_BIND_NOW= -E LD_LIBRARY_VERSION=`/lib/ld-linux.so.2 --verify /usr/bin/vmware-ping` -E LD_VERBOSE= /usr/bin/vmware-ping execve("/usr/bin/vmware-ping", ["/usr/bin/vmware-ping"], [/* 24 vars */]) = 0 brk(0) = 0x908b000 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=78121, ...}) = 0 mmap2(NULL, 78121, PROT_READ, MAP_PRIVATE, 3, 0) = 0x305000 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\3\0\1\0\0\0\320\20"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1673760, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x549000 mmap2(0x45efb000, 1390032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x45efb000 mmap2(0x46049000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14e) = 0x110000 --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++ Process 29631 detached [root@localhost ~]# strace -E LD_WARN= -E LD_BIND_NOW= -E LD_LIBRARY_VERSION=`/lib/ld-linux.so.2 --verify /usr/bin/vmware-ping` -E LD_VERBOSE= /lib/ld-linux.so.2 /usr/bin/vmware-pingexecve("/lib/ld-linux.so.2", ["/lib/ld-linux.so.2", "/usr/bin/vmware-ping"], [/* 24 vars */]) = 0 brk(0) = 0x810e2000 open("/usr/bin/vmware-ping", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\2\0\3\0\1\0\0\0`\210\4"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|S_ISUID|0555, st_size=12360, ...}) = 0 mmap2(0x8048000, 12288, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x8048000 mmap2(0x804b000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0x804b000 mprotect(0xbf94a000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC|PROT_GROWSDOWN) = 0 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f3b000 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=78121, ...}) = 0 mmap2(NULL, 78121, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f27000 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\3\0\1\0\0\0\320\20"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1673760, ...}) = 0 mmap2(0x45efb000, 1390032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x45efb000 mmap2(0x46049000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14e) = 0x46049000 mmap2(0x4604c000, 9680, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4604c000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f26000 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f266c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 mprotect(0x46049000, 8192, PROT_READ) = 0 mprotect(0x8001b000, 4096, PROT_READ) = 0 munmap(0xb7f27000, 78121) = 0 write(2, "VMware\'s ping\n\nUsage: /usr/bin/v"..., 445VMware's ping Usage: /usr/bin/vmware-ping <hostname> : remote host [-i <seconds>] : interval (default is 1) [-t <seconds>] : timeout (default is 10) [-s <bytes>] : packet payload size (default is 56, min is 1) [-q] : quiet mode [-b] : broadcast mode Sends one request packet to the remote host every 'interval' seconds until we get a reply or 'timeout' seconds have elapsed ) = 445 exit_group(3) = ? Process 29640 detached [root@localhost ~]# Oops, sorry, -E LD_TRACE_LOADED_OBJECTS=1 is needed among strace options as well, in both cases. Also, everything should be on one line, from the above it sounds like you have a newline between /lib/ld-linux.so.2 and --verify. I believe all on one line: [root@localhost ~]# strace -E LD_TRACE_LOADED_OBJECTS=1 -E LD_WARN= -E LD_BIND_NOW= -E LD_LIBRARY_VERSION=`/lib/ld-linux.so.2 --verify /usr/bin/vmware-ping` -E LD_VERBOSE= /lib/ld-linux.so.2 /usr/bin/vmware-ping execve("/lib/ld-linux.so.2", ["/lib/ld-linux.so.2", "/usr/bin/vmware-ping"], [/* 25 vars */]) = 0 brk(0) = 0x81fc5000 open("/usr/bin/vmware-ping", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\2\0\3\0\1\0\0\0`\210\4"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|S_ISUID|0555, st_size=12360, ...}) = 0 mmap2(0x8048000, 12288, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x8048000 mmap2(0x804b000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0x804b000 mprotect(0xbfb41000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC|PROT_GROWSDOWN) = 0 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f58000 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=78121, ...}) = 0 mmap2(NULL, 78121, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f44000 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\3\0\1\0\0\0\320\20"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1673760, ...}) = 0 mmap2(0x45efb000, 1390032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x45efb000 mmap2(0x46049000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14e) = 0x46049000 mmap2(0x4604c000, 9680, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4604c000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f43000 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f436c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 writev(1, [{"\t", 1}, {"linux-gate.so.1", 15}, {" => ", 4}, {"", 0}, {" (0x", 4}, {"00f98000", 8}, {")\n", 2}], 7 linux-gate.so.1 => (0x00f98000) ) = 34 writev(1, [{"\t", 1}, {"libc.so.6", 9}, {" => ", 4}, {"/lib/libc.so.6", 14}, {" (0x", 4}, {"45efb000", 8}, {")\n", 2}], 7 libc.so.6 => /lib/libc.so.6 (0x45efb000) ) = 42 writev(1, [{"\t", 1}, {"/lib/ld-linux.so.2", 18}, {" (0x", 4}, {"80000000", 8}, {")\n", 2}], 5 /lib/ld-linux.so.2 (0x80000000) ) = 33 exit_group(0) = ? Process 30365 detached [root@localhost ~]# Believe all on one line: [root@localhost ~]# strace -E LD_TRACE_LOADED_OBJECTS=1 -E LD_WARN= -E LD_BIND_NOW= -E LD_LIBRARY_VERSION=`/lib/ld-linux.so.2 --verify /usr/bin/vmware-ping` -E LD_VERBOSE= /usr/bin/vmware-ping execve("/usr/bin/vmware-ping", ["/usr/bin/vmware-ping"], [/* 25 vars */]) = 0 brk(0) = 0x88eb000 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=78121, ...}) = 0 mmap2(NULL, 78121, PROT_READ, MAP_PRIVATE, 3, 0) = 0xfd9000 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\3\0\1\0\0\0\320\20"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1673760, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x717000 mmap2(0x45efb000, 1390032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x45efb000 mmap2(0x46049000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14e) = 0x110000 --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++ Process 30380 detached [root@localhost ~]# mmap2(0x46049000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14e) = 0x110000 This is the bug, the kernel didn't honor MAP_FIXED. What kernel are you using? uname -a *** This bug has been marked as a duplicate of 242612 *** *** This bug has been marked as a duplicate of 242612 *** |