In article <1m08d7u.12s2qk7npk1nm%m...@netbsd.org>, Emmanuel Dreyfus <m...@netbsd.org> wrote: >Martin Husemann <mar...@duskware.de> wrote: > >> So ifdef and port it to our libunwind ;-) > >It does not seems obvious. > >I now have this: > >// stacktrace using libunwind >DLLEXPORT size_t rec_backtrace(ptrint_t *data, size_t maxsize) >{ >#ifdef __NetBSD__ > return backtrace(data, maxsize); >#else > unw_context_t uc; > unw_getcontext(&uc); > return rec_backtrace_ctx(data, maxsize, &uc); >#endif >} > >It gets a SIGSEGV in backtrace() and crashes again in signal handler for the >same reason. I am not sure why __builtin_frame_address(3) meets trouble. > >#0 0x00007f7ff520d26e in getframeaddr (level=2) at stacktraverse.c:153 >#1 0x00007f7ff5200939 in backtrace (buffer=<optimized out>, size=80000) > at execinfo.c:60
which execinfo.c or libexecinfo are you linking against? It does not seem to be the one in the base system... christos