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(a)redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility