Openembedded Core Discussions
 help / color / mirror / Atom feed
* Problem with new image-prelink
@ 2011-09-09  3:34 James Limbouris
  2011-09-09 15:57 ` Mark Hatle
  0 siblings, 1 reply; 10+ messages in thread
From: James Limbouris @ 2011-09-09  3:34 UTC (permalink / raw)
  To: openembedded-core@lists.openembedded.org

Hi,

After the new version of prelink was committed, I started experiencing
segmentation faults in a large Qt app on my prelinked image.
They go away when image-prelink is disabled, or the single binary is
reinstalled with opkg. I am using eglibc 2.12 and gcc 4.5. Is anyone
else having trouble?

Strace shows the binary gets through a lot of library loads. Here is the tail
end before the crash:

open("/usr/lib/libQtDBusE.so.4", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\274n\1D4\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=499692, ...}) = 0
mmap2(0x44000000, 497232, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x44000000
mmap2(0x44078000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x78) = 0x44078000
close(3)                                = 0
open("/usr/lib/libpng12.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\370\266\215A4\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=130844, ...}) = 0
mmap2(0x418d8000, 160984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x418d8000
mprotect(0x418f8000, 28672, PROT_NONE)  = 0
mmap2(0x418ff000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1f) = 0x418ff000
close(3)                                = 0
open("/usr/lib/libfreetype.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\310\366\5B4\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=458292, ...}) = 0
mmap2(0x42058000, 488488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x42058000
mprotect(0x420c5000, 28672, PROT_NONE)  = 0
mmap2(0x420cc000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6c) = 0x420cc000
close(3)                                = 0
open("/usr/lib/libQtXmlE.so.4", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\364,\20B4\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=268336, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40007000
mmap2(0x420f0000, 297992, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x420f0000
mprotect(0x42130000, 28672, PROT_NONE)  = 0
mmap2(0x42137000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3f) = 0x42137000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40008000
set_tls(0x40008860, 0x40008f48, 0x415a4048, 0x40008860, 0x415a4048) = 0
mprotect(0x416f3000, 4096, PROT_READ)   = 0
mprotect(0x41c29000, 12288, PROT_READ)  = 0
mprotect(0x416cd000, 8192, PROT_READ)   = 0
mprotect(0x417d1000, 4096, PROT_READ)   = 0
mprotect(0x417e5000, 4096, PROT_READ)   = 0
mprotect(0x4179d000, 4096, PROT_READ)   = 0
mprotect(0x415a3000, 4096, PROT_READ)   = 0
munmap(0x40001000, 5103)                = 0
set_tid_address(0x40008408)             = 1235
set_robust_list(0x40008410, 0xc)        = 0
rt_sigaction(SIGRTMIN, {0x416dc084, [], SA_SIGINFO|0x4000000}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x416dbf28, [], SA_RESTART|SA_SIGINFO|0x4000000}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
brk(0)                                  = 0x1c5000
brk(0x1e6000)                           = 0x1e6000
open("/proc/self/auxv", O_RDONLY)       = 3
read(3, "\20\0\0\0\227\1\0\0", 8)       = 8
close(3)                                = 0
sched_getparam(1235, { 0 })             = 0
sched_getscheduler(1235)                = 0 (SCHED_OTHER)
clock_getres(CLOCK_MONOTONIC, {0, 1})   = 0
sched_get_priority_min(SCHED_OTHER)     = 0
sched_get_priority_max(SCHED_OTHER)     = 0
sched_get_priority_max(SCHED_OTHER)     = 0
gettimeofday({1315537291, 101290}, NULL) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Segmentation fault


It should have continued with:


open("/usr/lib/charset.alias", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/locale.alias", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
clock_gettime(CLOCK_MONOTONIC, {645, 655570927}) = 0
futex(0x417d20a4, FUTEX_WAKE_PRIVATE, 2147483647) = 0
uname({sys="Linux", node="192.168.1.14", ...}) = 0
socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
open("/etc/nsswitch.conf", O_RDONLY)    = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=465, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40001000
read(3, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 465
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x40001000, 4096)                = 0
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=5103, ...}) = 0
mmap2(NULL, 5103, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40001000
close(3)                                = 0
open("/lib/libnss_compat.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0T\r\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=26368, ...}) = 0
mmap2(NULL, 57952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x40009000
mprotect(0x4000f000, 28672, PROT_NONE)  = 0
mmap2(0x40016000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5) = 0x40016000
close(3)
.....

I think the gettimeofday() before the crash is the end of the loading process.
None of the other binaries on the system are doing this - even demos from
qt4-embedded-demos. The only salient feature of this particular binary is
its large resource section, weighing it in at 1.4 MB.

I'm rebuilding now with eglibc 2.13 and gcc 4.6. Will report the results.  

Regards, 
James Limbouris




^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2011-09-15  1:06 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-09  3:34 Problem with new image-prelink James Limbouris
2011-09-09 15:57 ` Mark Hatle
2011-09-12  1:39   ` James Limbouris
2011-09-12 14:50     ` Mark Hatle
2011-09-13  2:58       ` James Limbouris
2011-09-13  9:16         ` Phil Blundell
2011-09-14  0:52           ` Mark Hatle
2011-09-14  1:33             ` James Limbouris
2011-09-14 14:30               ` Mark Hatle
2011-09-15  1:01                 ` James Limbouris

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox