[Crash-utility] Crash-utility Digest, Vol 137, Issue 18

Dave Anderson anderson at redhat.com
Thu Feb 23 15:05:50 UTC 2017



----- Original Message -----
> >> >> PID: 30444 TASK: ffff8820454e9520 CPU: 19 COMMAND: "python"
> >> >> #0 [ffff88203de8b4f0] machine_kexec at ffffffff8103d1ab
> >> >> #1 [ffff88203de8b550] crash_kexec at ffffffff810cc4a2
> >> >> #2 [ffff88203de8b620] oops_end at ffffffff8153d540
> >> >> #3 [ffff88203de8b650] no_context at ffffffff8104e8cb
> >> >> #4 [ffff88203de8b6a0] __bad_area_nosemaphore at ffffffff8104eb55
> >> >> #5 [ffff88203de8b6f0] bad_area at ffffffff8104ec7e
> >> >> #6 [ffff88203de8b720] __do_page_fault at ffffffff8104f483
> >> >> #7 [ffff88203de8b840] do_page_fault at ffffffff8153f48e
> >> >> #8 [ffff88203de8b870] page_fault at ffffffff8153c835
> [exception RIP: list_del+27]
> RIP: ffffffff812a3f8b RSP: ffff88203de8b928 RFLAGS: 00010046
> RAX: 0000000000000006 RBX: ffffea006f040028 RCX: 0000000000000000
> RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffea006f040028
> RBP: ffff88203de8b938 R8: ffffea006f040028 R9: 0000000000000000
> R10: 0000000000000000 R11: 000000000000000a R12: 0000000000000000
> R13: ffff880000021de8 R14: 0000000000000020 R15: ffff880000019d80
> ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0000
> >> >> #9 [ffff88203de8b940] __rmqueue at ffffffff811336c3
> >> >> #10 [ffff88203de8b9e0] get_page_from_freelist at ffffffff81135350
> >> >> #11 [ffff88203de8bb10] __alloc_pages_nodemask at ffffffff81136ff9
> >> >> #12 [ffff88203de8bc60] alloc_pages_vma at ffffffff8117068a
> >> >> #13 [ffff88203de8bcb0] handle_pte_fault at ffffffff81152afd
> >> >> #14 [ffff88203de8bd90] handle_mm_fault at ffffffff81153179
> >> >> #15 [ffff88203de8be00] __do_page_fault at ffffffff8104f156
> >> >> #16 [ffff88203de8bf20] do_page_fault at ffffffff8153f48e
> >> >> #17 [ffff88203de8bf50] page_fault at ffffffff8153c835
> 
> Hi, Dave. I followed what you said.
> sym do_linear_fault , do_non_linear_fault, do_swap_page , do_wp_page
> And I only found that do_wp_page's symbol exist, but I also found that
> __do_fault's symbol exist. According to the source code, I found that only
> two functions( do_linear_fault , do_non_linear_fault ) will call
> __do_fault() . So how to exclude these two functions ( do_linear_fault ,
> do_non_linear_fault )? 

I didn't "exclude" do_linear_fault() and do_non_linear_fault(), I said that
they are inlined.  They are inlined into handle_pte_fault(), which is the 
only function that calls them, and therefore will never be shown as part
of a backtrace.

> By the way, the result of 'dis -l handle_pte_fault
> |grep call |grep do' is as follow, you can see the __do_fault().
> crash> dis -l handle_pte_fault|grep call | grep do
> 0xffffffff8115244b <handle_pte_fault+139>: callq 0xffffffff81151e90
> <__do_fault>
> 0xffffffff811524b2 <handle_pte_fault+242>: callq 0xffffffff81151e90
> <__do_fault>
> 0xffffffff81152688 <handle_pte_fault+712>: callq 0xffffffff81151570
> <do_wp_page>
> 0xffffffff81152d0c <handle_pte_fault+2380>: callq 0xffffffff81151570
> <do_wp_page>
> 0xffffffff81152d5c <handle_pte_fault+2460>: callq 0xffffffff8115cc80
> <do_page_add_anon_rmap>

Exactly.  The two __do_fault() calls from handle_pte_fault() above are
generated by the inlining of do_linear_fault() can do_non_linear_fault()
into handle_pte_fault().

Again, please use "bt -t" to get a list of all kernel text symbols,
and compare that output to the regular "bt" output.  It is always possible
that the "bt" output may either skip a frame, or include a stale frame.

Dave




More information about the Crash-utility mailing list