Bug#548842: libc6: alignment error in /lib/ld-linux.so.3 on armel
Package: libc6
Version: 2.9-25
Severity: normal
I'm running alsaplayer on an armel platform, using the -text frontend
and the -alsa output. I've configured my armel machine to send a SIGBUS
to any process which makes an alignment error by doing this:
echo 5 > /proc/cpu/alignment
when i launch the player (compiled with debug symbols), even before it
gets to main() i get the SIGBUS.
Here's the backtrace i see with libc6-dbg installed:
(gdb) bt
#0 elf_machine_rel (scope=0x4001e1a0, lazy=1, consider_profiling=0) at ../ports/sysdeps/arm/dl-machine.h:429
#1 elf_dynamic_do_rel (scope=0x4001e1a0, lazy=1, consider_profiling=0) at do-rel.h:120
#2 _dl_relocate_object (scope=0x4001e1a0, lazy=1, consider_profiling=0) at dl-reloc.c:266
#3 0x400039bc in dl_main (phdr=0x8034, phnum=8, user_entry=0xbe98257c) at rtld.c:2231
#4 0x40015110 in _dl_sysdep_start (start_argptr=<value optimized out>, dl_main=0x400021d8 <dl_main>) at ../elf/dl-sysdep.c:239
#5 0x40000cd0 in _dl_start_final (arg=0xbe982870, info=0xbe9825f8) at rtld.c:332
#6 0x40000f68 in _dl_start (arg=0xbe982870) at rtld.c:560
#7 0x400007f0 in _start () from /lib/ld-linux.so.3
#8 0x400007f0 in _start () from /lib/ld-linux.so.3
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)
that last line is just:
*reloc_addr += value
but reloc_addr is optimized out.
unfortunately, rebuilding packages (esp. large packages like libc6) takes
a long time on machines like this (it's an NSLU2, 266Mhz with 32MB RAM),
so i haven't had a chance to debug further.
People interested in this bug might also be interested in discussion
from http://bugs.debian.org/397616 . for examples of potential dangers
of undetected memory alignment failures, see
http://bugs.debian.org/548815 -- hopefully alignment failures in libc6
won't cause higher-level trouble the way they do with some media codecs.
I also asked for discussion in general about alignment issues on armel:
http://lists.debian.org/debian-arm/2009/09/msg00109.html
Let me know if i can provide more debugging help on this.
--dkg
-- System Information:
Debian Release: squeeze/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: armel (armv5tel)
Kernel: Linux 2.6.30-1-ixp4xx
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/dash
Versions of packages libc6 depends on:
ii libc-bin 2.9-25 GNU C Library: Binaries
ii libgcc1 1:4.4.1-1 GCC support library
libc6 recommends no packages.
Versions of packages libc6 suggests:
ii debconf [debconf-2.0] 1.5.27 Debian configuration management sy
pn glibc-doc <none> (no description available)
ii locales 2.9-25 GNU C Library: National Language (
-- debconf information:
* glibc/restart-services: cron
glibc/disable-screensaver:
glibc/restart-failed:
glibc/upgrade: true
Reply to: