[Crash-utility] Re: search -k
Dave Anderson
anderson at redhat.com
Fri Mar 28 15:38:07 UTC 2008
Yang Zhiguo wrote:
> hi,
>
> i run crash with gdb.
>
> [root at rhel51rc2 crash-4.0-6.1]# gdb ./crash
> GNU gdb Red Hat Linux (6.5-25.el5rh)
> Copyright (C) 2006 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. Type "show warranty" for details.
> This GDB was configured as "ia64-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".
>
> (gdb) b search
> Breakpoint 1 at 0x40000000000f8e11: file memory.c, line 11025.
> (gdb) r -s
> Starting program: /home/yangzg/crash-4.0-6.1/crash -s
> crash> search -k 12345
>
> Breakpoint 1, search (start=11529215046068469760, end=18446744073709551615, mask=0, memtype=1, value=0x60000fffffe3eab0, vcnt=1) at memory.c:11025
> 11025 if (start & (sizeof(long)-1)) {
> (gdb) n
> 11030 pagebuf = GETBUF(PAGESIZE());
> (gdb)
> 11031 next = start;
> (gdb)
> 11033 for (pp = VIRTPAGEBASE(start); next < end; next = pp) {
> (gdb)
> 11034 lastpage = (VIRTPAGEBASE(next) == VIRTPAGEBASE(end));
> (gdb)
> 11035 if (LKCD_DUMPFILE())
> (gdb)
> 11038 switch (memtype)
> (gdb)
> 11050 if (!kvtop(CURRENT_CONTEXT(), pp, &paddr, 0) ||
> (gdb) s
> kvtop (tc=0x6000000001ec1c50, kvaddr=11529215046068469760, paddr=0x60000fffffe368e8, verbose=0) at memory.c:2306
> 2306 return (machdep->kvtop(tc ? tc : CURRENT_CONTEXT(), kvaddr,
> (gdb) s
> ia64_kvtop (tc=0x6000000001ec1c50, kvaddr=11529215046068469760, paddr=0x60000fffffe368e8, verbose=0) at ia64.c:1031
> 1031 if (!IS_KVADDR(kvaddr))
> (gdb) n
> 1034 if (!vt->vmalloc_start) {
> (gdb)
> 1039 switch (VADDR_REGION(kvaddr))
> (gdb)
> 1054 if (ia64_IS_VMALLOC_ADDR(kvaddr))
> (gdb)
> 1056 *paddr = ia64_VTOP(kvaddr);
> (gdb) s
> ia64_VTOP (vaddr=11529215046068469760) at ia64.c:3501
> 3501 ms = &ia64_machine_specific;
> (gdb) n
> 3503 switch (VADDR_REGION(vaddr))
> (gdb)
> 3522 if (ia64_IS_VMALLOC_ADDR(vaddr) ||
> (gdb)
> 3531 paddr = vaddr - ms->kernel_start +
> (gdb)
> 3533 break;
> (gdb) p/x paddr
> $1 = 0xffffffff04000000 ======>error occured
> (gdb) p/x vaddr
> $2 = 0xa000000000000000
> (gdb) p/x ms->kernel_start
> $3 = 0xa000000100000000
> (gdb) p/x ms->phys_start
> $4 = 0x4000000
> (gdb)
>
> Best Regards,
> yang
I can reproduce it on a bare-metal RHEL5 kernel, so let me
figure out what's going on...
Thanks,
Dave
More information about the Crash-utility
mailing list