I noticed in the kernel log that the module was in fact correctly
loaded, but s6 was stuck waiting for something (I noticed this process
when doing a "ps"):
1213 root s6-ipcserverd -1 -- s6-ipcserver-access -v0 -E -l0 -i
data/rules -- s6-sudod -t 2000 -- /usr/libexec/s6-rc-oneshot-run -l
The existence of this process is normal: it's the daemon that spawns
the oneshot processes (so they're always run with a reproducible
environment). For every oneshot, s6-rc (spawns a s6-sudo process that)
connects to it and tells it to run the appropriate up (or down) script,
which can be found in the compiled database.
Around 1/10 boots, it got stuck here, the rest of them booted up just
What probably happened is that you hit either the 2 second timeout or
a race condition that was present in s6-rc-0.2.0.1. Both of these are
fixed in later versions, such as 0.3.0.1 (the latest).
When buildroot 2017.11 was released, I was thrilled to see new versions
of s6 in it (s6-rc 0.3.0.0, skalibs 188.8.131.52 and s6 184.108.40.206), but when
booting up I immediately got a SIGFPE in s6-rc-init,... I ran it
through strace and the result can be seen here:
It crashes at the exact same place if I re-run it, and it crashes every
Thanks for the report - it's very interesting. As Rasmus said, a
similar error during s6-rc-init happened before, but was never
reproducible. I've gone over the incriminated code several times, but
was unable to find a bug. :/
The SIGFPE sounds very weird because s6-rc doesn't use floating point
anywhere, but if it's hitting undefined behaviour then everything is
Can you somehow valgrind or gdb your s6-rc-init binary? I understand
it's on an embedded system, which can make it hard, but on my
machines I just cannot reproduce the problem :(
Short of that, if the latest versions are not working for you (see
below on how to successfully build them), s6-rc-0.4.0.0 is coming out
shortly, probably early next week, and it significantly refactors the
s6-rc-init code, which would:
- make it possible that it magically works for you, if the buggy
code was replaced
- make it easier for me to debug, if the problem still occurs.
I'm sorry I don't have a better solution for now.
src/daemontools-extras/s6-applyuidgid.c:57:29: error: implicit
declaration of function 'setgroups_and_gid'
if (gidn != (size_t)-1 && setgroups_and_gid(gid ? gid : getegid(),
gidn, gids) < 0)
cc1: some warnings being treated as errors
The sysdep that guards this function was added in skalibs-220.127.116.11,
so if you're using a Buildroot version made for skalibs-18.104.22.168, it's
lacking the sysdep and it makes sense that the build fails.
Try building the latest versions of skalibs/execline/s6/s6-rc with
the latest version of Buildroot, which should define all the relevant
sysdeps. I can't tell whether all the issues you encountered will be
fixed, but chances are the build will work, at least.