[yocto] gdb built with musl libc segfault

Lluis Campos lluis.campos at northern.tech
Tue Apr 2 04:45:12 PDT 2019


Hi all,

This is my very first question in the Yocto mailing list. Very exited! 
Please let me know if I should use other list for this.


I am building an image using musl libc instead of gnu libc. I am not 
using yocto-tiny distro, instead I achieve this by setting on my local.conf:

TCLIBC = "musl"


My app (mender) got a segfault just starting. See output from strace:

root at raspberrypi3:~# strace mender
execve("/usr/bin/mender", ["mender"], 0x7ee65e10 /* 13 vars */) = 0
set_tls(0x76f1bffc)                     = 0
set_tid_address(0x76f1bfa0)             = 3020
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_ACCERR, si_addr=0x530bc8} ---
+++ killed by SIGSEGV +++
Segmentation fault


To be able to debug the process, I added gdb to my image adding to my 
local.conf:

CORE_IMAGE_EXTRA_INSTALL += "packagegroup-core-buildessential 
packagegroup-core-tools-debug"


Then, ironically, gdb itself also segfaults:

root at raspberrypi3:~# strace gdb 2>&1 | tail
fcntl64(3, F_SETFD, FD_CLOEXEC)         = 0
getdents64(3, /* 6 entries */, 2048)    = 144
getdents64(3, /* 0 entries */, 2048)    = 0
close(3)                                = 0
ioctl(0, TIOCGWINSZ, {ws_row=25, ws_col=74, ws_xpixel=0, ws_ypixel=0}) = 0
getcwd("/home/root", 4096)              = 11
access("/usr/local/bin/gdb", X_OK)      = -1 ENOENT (No such file or 
directory)
access("/usr/bin/gdb", X_OK)            = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x7e35aff0} ---
+++ killed by SIGSEGV +++


So, what is going on here? My guess is that some recipes are being 
wrongly linked with gnu libc instead of musl, and then cannot run in my 
device.

Any ideas on how to debug the issue?

Thanks!


Lluís Campos
mender.io
Northen Tech



More information about the yocto mailing list