[Crash-utility] [PATCH} crash 4.0-2.8 fixes to make it work onx86_64 for 2.6.14

Badari Pulavarty pbadari at us.ibm.com
Wed Nov 2 21:51:36 UTC 2005


On Wed, 2005-11-02 at 15:57 -0500, Dave Anderson wrote:
> > So, the key will be to find a difference between 2.6.10 and 
> > 2.6.11's symbol contents. 
> 
> Hi Badari, 
> 
> Looking at what appears to be Andi's wholesale patch set that 
> made the VM changes, I think it may be possible to use 
> "boot_vmalloc_pgt" as a qualifier, because it went away with 
> the new scheme.  Also, "vmalloc_fault" was added, but since 
> it's a static function, its only caller may have inlined it 
> in the new kernel. 
> 
> Also, given the VM changes, I'm still amazed that the virtual 
> to physical translation of vmalloc and user page addresses 
> still works.  Are you sure that "vtop" on vmalloc and user 
> space addresses works correctly? 
> 
> To verify user-space address translation is working, you 
> should be able to do something like this.  Run crash in a 
> live session, and look at the very beginning of its address 
> space, and read the first few bytes: 
> 
> crash> set 
>     PID: 8052 
> COMMAND: "crash" 
>    TASK: 10018e1f7f0  [THREAD_INFO: 100189e4000] 
>     CPU: 3 
>   STATE: TASK_RUNNING (ACTIVE) 
> crash> vm 
> PID: 8052   TASK: 10018e1f7f0       CPU: 3   COMMAND: "crash" 
>        MM               PGD          RSS    TOTAL_VM 
>   1002fc08040       10018286000     63376k  121176k 
>       VMA           START       END     FLAGS FILE 
>   1002b8269f8        400000     788000   1875 /usr/bin/crash 
>   1002bb5d3c8        888000     8ab000 101873 /usr/bin/crash 
>   100288d9408        8ab000     8f8000 100077 
>   100302a0688        9aa000     9c2000 101873 /usr/bin/crash 
>   10028f49b98        9c2000    1b50000 100077 
>   10028f49358    2a95556000 2a95558000 100073 
>   1002edad688    2a95584000 2a95587000 100073 
>   ... 
> 
> crash> rd -u 0x400000 
>           400000:  00010102464c457f                    .ELF.... 
> crash> 

Yuck. User virtual is screwed up :(crash> set
    PID: 5253
COMMAND: "crash"
   TASK: 101269b9730  [THREAD_INFO: 10112fbe000]
    CPU: 0
  STATE: TASK_RUNNING (ACTIVE)
crash> vm
PID: 5253   TASK: 101269b9730       CPU: 0   COMMAND: "crash"
       MM               PGD          RSS    TOTAL_VM
  1011cc0b6c0       10114fd3000     126372k  121900k
      VMA           START       END     FLAGS FILE
  101270d7c08        400000     78b000
1875 /root/crash-4.0-2.8.new/crash
  10127966aa8        88b000     8ad000
101873 /root/crash-4.0-2.8.new/crash
  10037e58268        8ad000    1a67000 100073
  10037e58688    2a95556000 2a95558000 100073
  10009f7c148    2a95574000 2a95577000 100073
  1012731b6c8    2a95577000 2a983b9000     71 /usr/lib/locale/locale-
archive
...

crash> rd -u 0x400000
rd: invalid user virtual address: 400000  type: "64-bit UVADDR"


Ideas on why ? 

> 
> You should see the first bytes of the executable's ELF header, 
> as verified by the "ELF" string there. 
> 
> To verify module virtual addresses translation, try disassembling 
> a module text address, say some ext3 function, and verifying that 
> it makes sense? 
> 


vmalloc space seems to be fine:


> Thanks, crash> mod
     MODULE       NAME          SIZE  OBJECT FILE
ffffffff88012600  dm_mod       70872  (not loaded)  [CONFIG_KALLSYMS]
ffffffff8805ef80  ipv6        312832  (not loaded)  [CONFIG_KALLSYMS]
ffffffff8806e200  parport      47244  (not loaded)  [CONFIG_KALLSYMS]
ffffffff88073800  lp           17232  (not loaded)  [CONFIG_KALLSYMS]
ffffffff8807fd00  parport_pc   33896  (not loaded)  [CONFIG_KALLSYMS]
ffffffff8808ab00  usbserial    39280  (not loaded)  [CONFIG_KALLSYMS]
ffffffff8808e900  hw_random     7968  (not loaded)  [CONFIG_KALLSYMS]
ffffffff88098f80  uhci_hcd     38304  (not loaded)  [CONFIG_KALLSYMS]
ffffffff880a4600  ehci_hcd     39944  (not loaded)  [CONFIG_KALLSYMS]
ffffffff880acd80  i2c_core     29568  (not loaded)  [CONFIG_KALLSYMS]
ffffffff880b1700  i2c_i801     11540  (not loaded)  [CONFIG_KALLSYMS]
ffffffff880b6000  joydev       13952  (not loaded)  [CONFIG_KALLSYMS]
ffffffff880bb000  edd          13984  (not loaded)  [CONFIG_KALLSYMS]

crash> dis ip6_dst_lookup
0xffffffff88017c30 <ip6_dst_lookup>:    push   %rbp
0xffffffff88017c31 <ip6_dst_lookup+1>:  mov    %rsp,%rbp
0xffffffff88017c34 <ip6_dst_lookup+4>:  sub    $0x40,%rsp
0xffffffff88017c38 <ip6_dst_lookup+8>:  mov    %r12,0xffffffffffffffe0(%
rbp)
0xffffffff88017c3c <ip6_dst_lookup+12>: xor    %r12d,%r12d
0xffffffff88017c3f <ip6_dst_lookup+15>: test   %rdi,%rdi
0xffffffff88017c42 <ip6_dst_lookup+18>: mov    %r13,0xffffffffffffffe8(%
rbp)
0xffffffff88017c46 <ip6_dst_lookup+22>: mov    %r14,0xfffffffffffffff0(%
rbp)
0xffffffff88017c4a <ip6_dst_lookup+26>: mov    %r15,0xfffffffffffffff8(%
rbp)
0xffffffff88017c4e <ip6_dst_lookup+30>: mov    %rbx,0xffffffffffffffd8(%
rbp)
0xffffffff88017c52 <ip6_dst_lookup+34>: mov    %rdi,%r13
0xffffffff88017c55 <ip6_dst_lookup+37>: mov    %rsi,%r14
0xffffffff88017c58 <ip6_dst_lookup+40>: mov    %rdx,%r15
0xffffffff88017c5b <ip6_dst_lookup+43>: movq   $0x0,(%rsi)
0xffffffff88017c62 <ip6_dst_lookup+50>: je     0xffffffff88017e45
0xffffffff88017c68 <ip6_dst_lookup+56>: mov    0x230(%rdi),%rax
0xffffffff88017c6f <ip6_dst_lookup+63>: lea    0x88(%rdi),%r12
0xffffffff88017c76 <ip6_dst_lookup+70>: mov    %r12,%rdi
0xffffffff88017c79 <ip6_dst_lookup+73>: mov    %rax,0xffffffffffffffd0(%
rbp)
0xffffffff88017c7d <ip6_dst_lookup+77>: mov    0x4c(%rax),%edx
0xffffffff88017c80 <ip6_dst_lookup+80>: mov    %edx,0xffffffffffffffcc(%
rbp)
0xffffffff88017c83 <ip6_dst_lookup+83>: callq  0xffffffff80404620
<_read_lock>
0xffffffff88017c88 <ip6_dst_lookup+88>: mov    0x70(%r13),%rbx

>   Dave 
>   
>   
> 
> --
> Crash-utility mailing list
> Crash-utility at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility




More information about the Crash-utility mailing list