[Crash-utility] ARM64 (odroid-c2) crash fails to read live kernel

Dave Anderson anderson at redhat.com
Tue Mar 8 21:45:11 UTC 2016



----- Original Message -----
> > How is your system configured?
> 4k pages with 3-level PTE
> I did not backport any of the support for deeper level PTE's or larger page
> sizes
> 
> >You might even be able to get to a crash> prompt by running:
> > $ crash /proc/kcore --no_modules
> 
> no_modules works like a champ
> 
> root at odroid64-pre:~/crash-7.1.4# ./crash /proc/kcore --no_modules
> crash 7.1.4
> Copyright (C) 2002-2015 Red Hat, Inc.
> Copyright (C) 2004, 2005, 2006, 2010 IBM Corporation
> Copyright (C) 1999-2006 Hewlett-Packard Co
> Copyright (C) 2005, 2006, 2011, 2012 Fujitsu Limited
> Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.
> Copyright (C) 2005, 2011 NEC Corporation
> Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.
> Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.
> This program 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. Enter "help copying" to see the conditions.
> This program has absolutely no warranty. Enter "help warranty" for details.
> 
> GNU gdb (GDB) 7.6
> Copyright (C) 2013 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later < http://gnu.org/licenses/gpl.html
> >
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law. Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "aarch64-unknown-linux-gnu"...
> 
> WARNING: no kernel module access
> 
> KERNEL: /lib/modules/3.14.29+/build/vmlinux
> DUMPFILE: /proc/kcore
> CPUS: 4
> DATE: Tue Mar 8 15:15:26 2016
> UPTIME: 05:23:46
> LOAD AVERAGE: 0.67, 0.36, 0.19
> TASKS: 207
> NODENAME: odroid64-pre
> RELEASE: 3.14.29+
> VERSION: #1 SMP PREEMPT Tue Mar 8 01:06:35 CST 2016
> MACHINE: aarch64 (unknown Mhz)
> MEMORY: 1.9 GB
> PID: 8000
> COMMAND: "crash"
> TASK: ffffffc05c298c00 [THREAD_INFO: ffffffc05857c000]
> CPU: 1
> STATE: TASK_RUNNING (ACTIVE)
> 
> crash>
> 
> root at odroid64-pre:~/crash-7.1.4# ./crash /proc/kcore -d8

... [ cut ] ... 

> <readmem: ffffffc001c27f58, KVADDR, "modules", 8, (FOE), bb1a88>
> <read_proc_kcore: addr: ffffffc001c27f58 paddr: 2c27f58 cnt: 8>
> GETBUF(528 -> 0)
> module: ffffffbffc081ad0
> <readmem: ffffffbffc081ad0, KVADDR, "module struct", 528, (ROE|Q), c14b08>
> <readmem: ffffffc001ffc000, KVADDR, "pgd page", 4096, (FOE), f41e90>
> <read_proc_kcore: addr: ffffffc001ffc000 paddr: 2ffc000 cnt: 4096>
> <readmem: ffffffc000ffe000, KVADDR, "pmd page", 4096, (FOE), f42ea0>
> <read_proc_kcore: addr: ffffffc000ffe000 paddr: 1ffe000 cnt: 4096>
> crash: seek error: kernel virtual address: ffffffc000ffe000 type: "pmd page"
> root at odroid64-pre:~/crash-7.1.4#

Right, so as expected, it read the address of the first module structure
contained in the "modules" list_head, which is the first vmalloc()'d address
that is read during crash initialization.  It was in the act of doing a 
page-table walkthough of virtual address of ffffffbffc081ad0, which crapped
out at the "pmd page" step.  That's about as far as I can take it.  You'll
have to walk through the arm64_vtop_3level_4k() function in arm64.c.  
Probably one of the various macros used in there doesn't match up with
your configuration.

Dave




More information about the Crash-utility mailing list