Re: [PATCH v4 0/3] Compile-time stack frame pointer validation

Josh Poimboeuf
2015-05-20T17:21:49Z

On Wed, May 20, 2015 at 09:59:18AM -0700, Linus Torvalds wrote:
> On Wed, May 20, 2015 at 9:25 AM, Josh Poimboeuf <jpoimboe@redhat.com> wrote:
> > On Wed, May 20, 2015 at 09:03:37AM -0700, Andy Lutomirski wrote:
> >>
> >> I've never quite understood what the '?' means.
> >
> > It basically means "here's a function address we found on the stack,
> > which may or may not have been called." It's needed because stack
> > walking isn't currently 100% reliable.
>
> It is often quite interesting and helpful, because it shows stale data
> on the stack, giving clues about what happened just before.
>
> Now, I'd like gcc to generally be better about not wasting so much
> stack frame, so in that sense I'd like to see fewer '?" entries just
> from a code quality standpoint, but when debugging those things, the
> downside of "noise" is often cancelled by the upside of "ahh, it
> happens after calling X".
>
> So the "perfect stack frames" is actually not as great a thing as some
> people want to make it seem.

Ok, I can see how looking at stale stack data could be useful for some
of the really tough problems.

But right now, the meaning of '?' is ambiguous. It could be stale data,
or it could be part of a frame for the current stack which was skipped
due to missing frame pointers or an exception.

If we can somehow make the stack unwinder reliable, then it would at
least allow us to remove the ambiguity of the '?' entries. And it would
reduce the "noise" for the majority of issues where we don't care about
stale stack data, and can simply ignore it.

--
Josh