Re: 3.14-rc2 XFS backtrace because irqs_disabled.

Steven Rostedt
2014-02-12T12:44:26Z

On Wed, 12 Feb 2014 03:13:33 -0500
Tejun Heo <tj@kernel.org> wrote:

> On Tue, Feb 11, 2014 at 10:59:58PM -0800, Linus Torvalds wrote:
> > There's a lot of 200+ byte stack frames in block/blk-core.s, and they
> > all seem to be of the type perf_trace_block_buffer() - things created
> > with DECLARE_EVENT_CLASS(), afaik. Why they all have 200+ bytes of
> > frame, I have no idea. That sounds like a potential disaster too,
> > although hopefully it's mostly leaf functions - but leaf functions
> > *deep* in the callchain. Tejun? Steven, why _do_ they end up with such
> > huge frames?
>
> It looks like they're essentially the same for all the automatically
> generated trace functions. I'm seeing 232 byte stack frame in most of
> them. If I'm not completely confused by these macros, these are
> generated by DECLARE_EVENT_CLASS() in include/trace/ftrace.h and
> contains struct pt_regs in the stack frame which is already 168 bytes,
> so that seems like the culprit. No idea whether this is something
> avoidable. At least they shouldn't nest in any way. Steven?

They shouldn't nest. But if the perf tracepoint is active, I don't know
how much more of the stack is used in the functions that tracepoint
calls.

-- Steve