Control: affects -1 + heaptrack
Control: retitle -1 libunwind8: SIGSEGV in _ULarm_step on RPI 3B+ (heaptrack 
autopkgtest test fails at armel)


On Sun, 07 Mar 2021 14:38:24 +0100 Tobias Diedrich <ranma+debian...@tdiedrich.de> 
wrote:> Package: libunwind8
Version: 1.2.1-10~deb10u1
Severity: normal

Dear Maintainer,

While trying to use heaptrack to debug a memory leak in lxpanel I found that 
libunwind8 which heaptrack is using seems to segfault on armhf.
In case it helps I've rebuilt libunwind8 manually with --enable-debug to get 
extra debug output below.

$ UNW_DEBUG_LEVEL=1 heaptrack --debug /usr/bin/lxpanel --profile ranma-test
heaptrack output will be written to "/home/pi/heaptrack.lxpanel.11000.gz"
starting application in GDB, this might take some time...
Reading symbols from /usr/bin/lxpanel...Reading symbols from 
/usr/lib/debug/.build-id/71/5b0db86f91aa93d2e1249a5232bebe16cfbf55.debug...done.
done.
Starting program: /usr/bin/lxpanel --profile ranma-test
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
[New Thread 0x7559c1f0 (LWP 11032)]
 >_ULarm_init_local: (cursor=0x7eff6f68)


 >_ULarm_step: dwarf_step()=-10

Thread 1 "lxpanel" received signal SIGSEGV, Segmentation fault.
_ULarm_step (cursor=cursor@entry=0x7effaeb0) at arm/Gstep.c:244
244     arm/Gstep.c: No such file or directory.
(gdb)


Dear Maintainer,
I found the autopkgtest of heaptrack fails, so I tried to collect some more 
information,
and as the backtrace ends in libunwind8 I think this is the same issue as in 
this bug.

Following is a lighter reproducer, just needing gdb and heaptrack installed.
This is from a Debian Trixie/testing armel systemd-nspawn chroot
within a Debian Trixie/testing arm64 system.


Kind regards,
Bernhard



$ LANG=C.UTF-8 LD_PRELOAD=/usr/lib/heaptrack/libheaptrack_preload.so /bin/ls
Segmentation fault (core dumped)

$ gdb -q
(gdb) directory /home/benutzer/source/libunwind/orig/libunwind-1.6.2/src
Source directories searched: 
/home/benutzer/source/libunwind/orig/libunwind-1.6.2/src:$cdir:$cwd
(gdb) file /bin/ls
Reading symbols from /bin/ls...
(No debugging symbols found in /bin/ls)
(gdb) set environment LANG=C.UTF-8
(gdb) set environment LD_PRELOAD=/usr/lib/heaptrack/libheaptrack_preload.so
(gdb) set startup-with-shell off
(gdb) run
Starting program: /usr/bin/ls
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabi/libthread_db.so.1".
[New Thread 0xf7a9c380 (LWP 16285)]

Thread 1 "ls" received signal SIGSEGV, Segmentation fault.
_ULarm_step (cursor=cursor@entry=0xfffeb038) at arm/Gstep.c:164
164                   if (dwarf_get(&c->dwarf, DWARF_LOC(frame, 0), &instr) < 0)
(gdb) bt
#0  _ULarm_step (cursor=cursor@entry=0xfffeb038) at arm/Gstep.c:164
#1  0xf7dd8a84 in slow_backtrace (uc=0xfffe6ff0, size=64, buffer=<optimized 
out>) at mi/backtrace.c:45
#2  unw_backtrace (buffer=<optimized out>, size=64) at mi/backtrace.c:72
#3  0xf7fbd89c in Trace::fill (skip=2, this=0xfffef0a8) at 
./src/track/trace.h:45
#4  heaptrack_malloc (ptr=ptr@entry=0x428720, size=size@entry=5) at 
./src/track/libheaptrack.cpp:878
#5  0xf7fbefb0 in malloc (size=5) at ./src/track/heaptrack_preload.cpp:214
#6  0xf7e318e0 in _nl_normalize_codeset (codeset=0xfffef252 "UTF-8", 
name_len=5) at l10nflist.c:321
#7  0xf7e31b24 in _nl_explode_name (name=<optimized out>, 
language=language@entry=0xfffef260, modifier=modifier@entry=0xfffef264, 
territory=territory@entry=0xfffef268, codeset=codeset@entry=0xfffef26c,
    normalized_codeset=normalized_codeset@entry=0xfffef270) at explodename.c:104
#8  0xf7e29758 in _nl_find_locale (locale_path=0xf7f6c03c <_nl_default_locale_path> 
"/usr/lib/locale", locale_path_len=16, category=category@entry=12, 
name=name@entry=0xfffef2f4) at findlocale.c:196
#9  0xf7e2be78 in __GI_setlocale (category=12, locale=<optimized out>) at 
setlocale.c:337
#10 0x004022e8 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)

Reply via email to