Re: C aggregate passing (Rust kernel policy)

Josh Poimboeuf
2025-02-26T22:07:35Z

On Wed, Feb 26, 2025 at 12:47:33PM -0500, Steven Rostedt wrote:
> On Wed, 26 Feb 2025 12:41:30 -0500
> Kent Overstreet <kent.overstreet@linux.dev> wrote:
>
> > It's been awhile since I've looked at one, I've been just automatically
> > switching back to frame pointers for awhile, but - I never saw
> > inaccurate backtraces, just failure to generate a backtrace - if memory
> > serves.
>
> OK, maybe if the bug was bad enough, it couldn't get access to the ORC
> tables for some reason.

ORC has been rock solid for many years, even for oopses. Even if it
were to fail during an oops for some highly unlikely reason, it falls
back to the "guess" unwind which shows all the kernel text addresses on
the stack.

The only known thing that will break ORC is if objtool warnings are
ignored. (BTW those will soon be upgraded to build errors by default)

ORC also gives nice clean stack traces through interrupts and
exceptions. Frame pointers *try* to do that, but for async code flows
that's very much a best effort type thing.

So on x86-64, frame pointers are very much deprecated. In fact we've
talked about removing the FP unwinder as there's no reason to use it
anymore. Objtool is always enabled by default anyway.

--
Josh