Re: [PATCH v3 39/51] x86/dumpstack: convert show_trace_log_lvl() to use the new unwinder

From: Josh Poimboeuf
Date: Mon Aug 15 2016 - 12:44:30 EST


On Sun, Aug 14, 2016 at 01:13:54AM -0700, Andy Lutomirski wrote:
> On Fri, Aug 12, 2016 at 7:28 AM, Josh Poimboeuf <jpoimboe@xxxxxxxxxx> wrote:
> > Convert show_trace_log_lvl() to use the new unwinder. dump_trace() has
> > been deprecated.
>
> >
> > Another change here is that callers of show_trace_log_lvl() don't need
> > to provide the 'bp' argument. The unwinder already finds the relevant
> > frame pointer by unwinding until it reaches the first frame after the
> > provided stack pointer.
>
> I still think that the best long-term solution is to change the sp and
> bp arguments to an optional state argument and to add a helper to
> capture the current state for future unwinding, but this is okay too.
> (If nothing else, this may improve DWARF's ability to recover function
> arguments and such that are available when the trace is requested but
> that are gone by the time the unwinder runs. But mainly because it
> seems simpler and more direct to me and therefore seems like it will
> be less likely to get confused and skip too many frames.)
>
> But I'm okay with this for now.

Long term, maybe something like an unwind_capture_state() helper might
be best (though I'm not yet convinced either way). However it wouldn't
quite work with today's code because show_stack(), which is implemented
for all architectures, takes 'sp' as an argument.

--
Josh