On Mon, May 8, 2023, at 8:33 AM, Serhei Makarov wrote:
> Usage instructions will be kept up-to-date in README.eu-stacktrace on
> the topic branch:
>
> - 
> https://sourceware.org/cgit/elfutils/tree/README.eu-stacktrace?h=users/serhei/eu-stacktrace
Hello,

I wanted to send an up-to-date outline of my current plans for eu-stacktrace. I 
believe that I will be able to submit my branch for review prior to the planned 
autumn release of elfutils. But there are still a number things to fix before 
the code can go through formal review. For now I'll describe what these are 
(and follow-up with another email once I've made good progress on them).

* Major features needed: basic support for perf tool.

The currently-implemented sysprof backend depends on a set of patches to 
sysprof. I will submit these for review after a bit more code cleanup, but to 
avoid creating a rigid timeframe for their release, it would be good to give 
eu-stacktrace another use-case, even if only a basic one. Unwinding of stack 
samples in perf tool recordings should be ideal for this.

* Major features needed(?): container support.

The timeframe for this is a bit more uncertain, but it's highly requested by 
the sysprof maintainers; necessary for profiling Fedora Silverblue-type 
systems. Sysprof currently includes code (e.g. in 
src/libsysprof/sysprof-podman.c, sysprof-linux-instrument.c) to locate 
executables inside podman and flatpak containers.

The extent to which this functionality needs to be replicated is still a bit 
uncertain to me -- it may turn out that, for the elfutils reporting 
infrastructure's purposes, access through the /proc/PID/{maps,mem} interface 
will give us sufficient access to CFI.

But if it turns out to be needed, I'm not ruling out re-implementing the 
Sysprof functionality for elfutils, because any benefits would accrue to any 
tool that uses elfutils reporting. This would need to be reviewed as a separate 
patchset since these would be changes to the elfutils libraries rather than a 
separate new tool under src/. 

* Various other fixes.

The major remaining issues to fix relate to architecture portability, and I 
have a very good precedent here in terms of the perfparser implementation from 
qt-creator cf. 
https://codereview.qt-project.org/gitweb?p=qt-creator/perfparser.git;a=blob;f=app/perfregisterinfo.cpp;hb=HEAD

Beyond that, there is a certain amount of work to look at specific isolated 
cases where eu-stacktrace isn't unwinding a particular application. Some of 
these will lead to crucial bugfixes; others (such as tracing JIT 
implementations that don't really worry about debuginfo) are not something we 
can do much about. I would suggest that, once the abovementioned tasks are 
done, it's best to release eu-stacktrace as an experimental tool and give more 
people opportunity to 'kick the tires' and find more issues. A certain length 
of time with the tool released as part of elfutils and continuing to mature is 
really a prerequisite to start talking about eu-stacktrace as a reason to 
re-enable framepointer optimizations.

All the best,
      Serhei

Reply via email to