[Xenomai] Xenomai and libunwind on ARM Cortex A9

Andreas Glatz andi.glatz at gmail.com
Tue Oct 3 13:49:58 CEST 2017


I implemented the debug signal handle SIGXCPU as described in the
Xenomai documentation. The glibc function backtrace() returns
backtraces, but they often are very short (they typically end at the
signal (restore) handler, and don't show the function which caused the
SIGXCPU in the first place).

I found libunwind, which is preloaded before starting our application
and replaces the glibc backtrace handler with unw_backtrace(). This
works fine most of the time.

Recently, I discovered that the application crashes with SIGSEGV
during startup when quite a few SIGXCPUs occur in short succession
according to the gdb trace. Everything seems to work fine when
switching back to the glibc backtrace() function though. Now I'm
wordering if unw_backtrace() is actually not (Xenomai) thread-save.
Has anyone seen this before [or any other clues]?



More information about the Xenomai mailing list