My gdb (GNU gdb (GDB) 10.2) backtrace fails to access kernel memory in vmalloc range. This is with a kernel crash coredump on x86_64 platform.
In my understanding 0xffffc90000000000 is the vmalloc start range with 48-bit virtual addressing system.
https://www.kernel.org/doc/Documentation/x86/x86_64/mm.txt
ffffc90000000000 | -55 TB | ffffe8ffffffffff | 32 TB | vmalloc/ioremap space (vmalloc_base)
`(gdb) bt
#0 0xffffffff817807ab in neigh_get_next (n=0xffff888129ff0a00, pos=0x0 <fixed_percpu_data>,
seq=<optimized out>, seq=<optimized out>) at net/core/neighbour.c:3220
Backtrace stopped: Cannot access memory at address 0xffffc90000c77dc0`
However linux crash utility helped me to dump the complete backtrace. All stack frame addresses are in 0xffffc9xxxxxxxxxx address range.
`crash>bt
#6 [ffffc90000c77dc0] neigh_seq_next at ffffffff8178096d
#7 [ffffc90000c77de0] seq_read_iter at ffffffff812302c4
#8 [ffffc90000c77e38] seq_read at ffffffff8123054e
#9 [ffffc90000c77eb8] proc_reg_read at ffffffff812806b6
#10 [ffffc90000c77ed0] vfs_read at ffffffff812046c0
#11 [ffffc90000c77f08] ksys_read at ffffffff81204a7a
#12 [ffffc90000c77f40] do_syscall_64 at ffffffff81a17bbd
#13 [ffffc90000c77f50] entry_SYSCALL_64_after_hwframe at ffffffff81c00099`
To debug further, I dumped all sections from vmlinux (gdb> maintenance info sections, info files). Address range 0xffffc9xxxxxxxxxx is missing there.
gdb usage has become very limited in this case. I am yet to figure out the missing piece. If anyone has encountered similar issue in the past & have any pointer, please share with me.
Thanks in advance.
In an attempt to debug a kernel crash (x86_64) using gdb 10.2, I expected the to see the complete backtrace with relevant information. However gdb fails to access kernel memory, appears to be in vmalloc range.