Re: [RFC][PATCH 0/3] ftrace: Add dynamically allocated trampolines

From: Josh Poimboeuf
Date: Fri Jul 11 2014 - 10:29:50 EST


On Fri, Jul 11, 2014 at 03:24:28PM +0200, Jiri Kosina wrote:
> On Fri, 11 Jul 2014, Masami Hiramatsu wrote:
>
> > >> I did some testing with kpatch and I found one minor issue. The dynamically
> > >> allocated trampoline seems to confuse dump_stack() somewhat.
> > >>
> > >> I added a dump_stack() call in my ftrace_ops callback function
> > >> (kpatch_ftrace_handler) which had a filter on meminfo_proc_show().
> > >
> > > Interesting. Are you using dwarf2 unwinder for stack dumping by any
> > > chance? It seems to get things right here. Will look into it more
> > > tomorrow.
> >
> > Hmm, can dwarf2 unwinder work on the trampoline method? Since the
> > trampoline just a copy of instructions which will not have CFI(which is
> > stored in dwarf section), I guess it may not work... Frame pointer (push
> > bp and save sp to bp on the entry) can work anyway.
>
> That was exactly my idea and that's why I asked, thanks for confirming.
>
> I am afraid we'll have to declare dynamic trampolines incompatible with
> drawf2 stack dumping.

In this case, the problem wasn't related to DWARF, because dump_stack()
uses the frame pointer to unwind the stack. I was able to fix the
problem with the following patch.

---