[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAPDLWs_iSrbXwfKa6CQ0f6H6GE4U88uRhaFgabRjMmSuSEpsiA@mail.gmail.com>
Date: Mon, 17 Jan 2022 10:27:14 +0530
From: Kaiwan N Billimoria <kaiwan.billimoria@...il.com>
To: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
jpoimboe@...hat.com
Cc: Chi-Thanh Hoang <chithanh.hoang@...il.com>
Subject: Issue using faddr2line on kernel modules
Hi there,
Am researching using the cool faddr2line script to help debug Oops'es
from kernel modules..
I find it works just fine when used against the unstripped vmlinux
with debug symbols.
My use case is for a kernel module which Oopses, though. Here's my scenario:
I built a module on a custom debug kernel (5.10.60) with most debug
options enabled...
KASLR is enabled by default as well.
A test kernel module Oopses on my x86_64 guest running this kernel with:
RIP: 0010:do_the_work+0x15b/0x174 [oops_tryv2]
So, i try this:
$ <...>/linux-5.10.60/scripts/faddr2line ./oops_tryv2.ko do_the_work+0x15b/0x174
bad symbol size: base: 0x0000000000000000 end: 0x0000000000000000
$
(It works fine with addr2line though!).
Now I think I've traced the faddr2line script's failure to locate
anything down to this:
...
done < <(${NM} -n $objfile | awk -v fn=$func -v end=$file_end '$3 ==
fn { found=1; line =$0; start=$1; next } found == 1 { found=0;
print line, "0x"$1 } END {if (found == 1) print line, end; }')
The nm output is:
$ nm -n ./oops_tryv2.ko |grep -i do_the_work
0000000000000000 t do_the_work
$
nm shows the text addr as 0x0; this is obviously incorrect (same 0x0
with objdump -d on the module).
Am I missing something? Any suggestions as to what I can try, to get
faddr2line working?
TIA,
Regards,
Kaiwan.
Powered by blists - more mailing lists