Re: Was: boot failure, "DWARF2 unwinder stuck at 0xc0100199"

From: Andi Kleen
Date: Thu Aug 31 2006 - 14:29:47 EST


On Thursday 31 August 2006 20:33, Badari Pulavarty wrote:
> On Thu, 2006-08-31 at 20:10 +0200, Andi Kleen wrote:
>
> > Should be fixed in .19
>
> Andi,
>
> I am looking at the "validity" of the stack traces. What I
> find is that "unwinder" is skipping few stack frames..
>
> As you can see from the following stack - it shows
>
> msync_interval() ->
> set_page_dirty() ->
> __set_page_dirty_buffers()
>
> But actual trace is (looking at the code):
>
> msync_interval() ->
> msync_page_range() ->
> msync_pud_range() ->
> msync_pgd_range() ->
> msync_pte_range() ->
> set_page_dirty() ->
> __set_page_dirty_buffers()
>
> Why is it skipping all msync_page/pud/pgd/pte_range() routines ?

Most likely because they're inlined. gcc tends to always inline static functions
with only a single caller, which is usually true for all the nested page table functions
in mm/*. Inlined functions (or tail called functions like return foo()) are invisible
to the unwinder.

-Andi


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/