[Crash-utility] [PATCH v5 0/4] arm64: more improvement of bt -f

Dave Anderson anderson at redhat.com
Wed Jun 29 21:25:27 UTC 2016



Hi Takahiro,

Here is another thing that I would prefer not to change/omit.

In the current code, the raw exception frame data is dumped as 
part of the "bt -[fF]" output, just prior to it being translated
as an exception frame:
  
  crash> bt -F
  PID: 1223   TASK: ffff800020ef5780  CPU: 3   COMMAND: "sh"
   ... [ cut ] ...
   #5 [ffff800020b0bb70] do_mem_abort at ffff00000808128c
      ffff800020b0bb70: ffff800020b0bd40 el1_da+24        
      ffff800020b0bb80: cpu_cgrp_subsys+152 0000000000000063 
      ffff800020b0bb90: ffff800020b0bd40 sysrq_handle_crash+32 
      ffff800020b0bba0: 0000000000000002 textbuf.34610    
      ffff800020b0bbb0: ffff800020b0bbd0 kallsyms_token_index+43128 
      ffff800020b0bbc0: 000000000000000f 0000000100000000 
      ffff800020b0bbd0: ffff800020b0bc70 vprintk_default+56 
      ffff800020b0bbe0: cpu_cgrp_subsys+152 0000000000000063 
      ffff800020b0bbf0: sysrq_crash_op   0000000000000009 
      ffff800020b0bc00: 0000000000000000 0000000000000015 
      ffff800020b0bc10: 0000000000000120 0000000000000040 
      ffff800020b0bc20: 0000000000000001 0000000000000000 
      ffff800020b0bc30: log_wait+8       0000000000000000 
      ffff800020b0bc40: 0000000000000000 00000000000047d4 
      ffff800020b0bc50: ffff800022f337a4 0000000000000000 
      ffff800020b0bc60: 0000000000000106 0000000000000001 
      ffff800020b0bc70: 0000000000000002 0000000000000106 
      ffff800020b0bc80: log_buf_len      cont             
      ffff800020b0bc90: 0000ffff83cc28f0 text.34829+13    
      ffff800020b0bca0: sys_write        0000ffff83d266c0 
      ffff800020b0bcb0: 0000000000000006 cpu_cgrp_subsys+152 
      ffff800020b0bcc0: 0000000000000063 sysrq_crash_op   
      ffff800020b0bcd0: 0000000000000009 0000000000000000 
      ffff800020b0bce0: 0000000000000015 0000000000000120 
      ffff800020b0bcf0: 0000000000000040 sys_call_table   
      ffff800020b0bd00: ffff800020b08000 ffff800020b0bd40 
      ffff800020b0bd10: sysrq_handle_crash+12 ffff800020b0bd40 
      ffff800020b0bd20: sysrq_handle_crash+32 0000000060400149 
      ffff800020b0bd30: cpu_cgrp_subsys+152 [kmalloc-1024]   
   #6 [ffff800020b0bd40] el1_da at ffff000008084568
       PC: ffff000008457fc8  [sysrq_handle_crash+32]
       LR: ffff000008457fb4  [sysrq_handle_crash+12]
       SP: ffff800020b0bd40  PSTATE: 60400149
      X29: ffff800020b0bd40  X28: ffff800020b08000  X27: ffff0000087e2000
      X26: 0000000000000040  X25: 0000000000000120  X24: 0000000000000015
      X23: 0000000000000000  X22: 0000000000000009  X21: ffff000008e071b0
      X20: 0000000000000063  X19: ffff000008dda000  X18: 0000000000000006
      X17: 0000ffff83d266c0  X16: ffff0000081c68b8  X15: ffff000008e6cc95
      X14: 0000ffff83cc28f0  X13: ffff000008e6c758  X12: ffff000008dda7a0
      X11: 0000000000000106  X10: 0000000000000002   X9: 0000000000000001
       X8: 0000000000000106   X7: 0000000000000000   X6: ffff800022f337a4
       X5: 00000000000047d4   X4: 0000000000000000   X3: 0000000000000000
       X2: ffff000008dda7b8   X1: 0000000000000000   X0: 0000000000000001
      ORIG_X0: ffff000008dda000  SYSCALLNO: ffff80002104d418
  ...
  
whereas with the v5 patchset, the exception frame only gets translated, 
but the actual raw memory never gets dumped:

  crash> bt -F
  PID: 1223   TASK: ffff800020ef5780  CPU: 3   COMMAND: "sh"
  ... [ cut ] ...
   #5 [ffff800020b0bb70] do_mem_abort at ffff000008081288
      ffff800020b0bb70: ffff800020b0bd40 el1_da+24        
      ffff800020b0bb80: cpu_cgrp_subsys+152 0000000000000063 
      ffff800020b0bb90: ffff800020b0bd40 sysrq_handle_crash+32 
      ffff800020b0bba0: 0000000000000002 textbuf.34610    
      ffff800020b0bbb0: ffff800020b0bbd0 kallsyms_token_index+43128 
      ffff800020b0bbc0: 000000000000000f 0000000100000000 
      ffff800020b0bbd0: ffff800020b0bc70 vprintk_default+56 
      ffff800020b0bbe0: cpu_cgrp_subsys+152 0000000000000063 
      ffff800020b0bbf0: sysrq_crash_op   0000000000000009 
      ffff800020b0bc00: 0000000000000000 0000000000000015 
      ffff800020b0bc10: 0000000000000120 0000000000000040 
   #6 [ffff800020b0bc20] el1_da at ffff000008084564
  --- <Exception in kernel> ---
       PC: ffff000008457fc8  [sysrq_handle_crash+32]
       LR: ffff000008457fb4  [sysrq_handle_crash+12]
       SP: ffff800020b0bd40  PSTATE: 60400149
      X29: ffff800020b0bd40  X28: ffff800020b08000  X27: ffff0000087e2000
      X26: 0000000000000040  X25: 0000000000000120  X24: 0000000000000015
      X23: 0000000000000000  X22: 0000000000000009  X21: ffff000008e071b0
      X20: 0000000000000063  X19: ffff000008dda000  X18: 0000000000000006
      X17: 0000ffff83d266c0  X16: ffff0000081c68b8  X15: ffff000008e6cc95
      X14: 0000ffff83cc28f0  X13: ffff000008e6c758  X12: ffff000008dda7a0
      X11: 0000000000000106  X10: 0000000000000002   X9: 0000000000000001
       X8: 0000000000000106   X7: 0000000000000000   X6: ffff800022f337a4
       X5: 00000000000047d4   X4: 0000000000000000   X3: 0000000000000000
       X2: ffff000008dda7b8   X1: 0000000000000000   X0: 0000000000000001
   ...

It's actually helpful being able to dump the exception frame data with
"bt -F" to show symbolic references that are found within the exception
frame itself. 

Dave




More information about the Crash-utility mailing list