Yeah, as far as I know, perf [1] is successfully using libunwind to provide callstacks. Probably, LTTng team should think about it too, if there are no serious obstacles.

[1]: https://perf.wiki.kernel.org/index.php/Main_Page


Best regards,
Valentin Grigorev


On Thu, Mar 26, 2020 at 11:53 PM Milian Wolff <milian.wolff@kdab.com> wrote:
On Donnerstag, 26. März 2020 20:41:17 CET Mathieu Desnoyers via lttng-dev
wrote:
> ----- On Mar 26, 2020, at 1:39 PM, lttng-dev <lttng-dev@lists.lttng.org>
wrote:
> > Hello!
> >
> > Currently, callstack collection in LTTng is only available for
> > kernel-space
> > events with context fields callstack-kernel and callstack-user .
> >
> > Is it expected that callstack collection for LTTng-UST will be added too?
> > And if it is expected, then how soon?
>
> Hi Valentin,
>
> It is something that would be interesting and useful, but a lot of work
> would be needed to have stack-walking this is fast enough and reentrant wrt
> signal handlers. Unfortunately, the backtrace(3) functions do not meet
> those requirements.
>
> Also, for gathering user-space callstacks from the kernel tracer, it only
> works if all user-space is compiled with frame pointers. This is also a
> limitation that would require a lot of work to overcome neatly.
>
> None of those features are currently on any roadmap due to lack of customers
> showing interest in getting this done.

libunwind [1] should meet the requirements you need. It is high performance
thanks to extensive caching, signal safe and does not rely on frame pointers.

[1]: https://github.com/libunwind/libunwind

--
Milian Wolff | milian.wolff@kdab.com | Senior Software Engineer
KDAB (Deutschland) GmbH, a KDAB Group company
Tel: +49-30-521325470
KDAB - The Qt, C++ and OpenGL Experts