Thread (21 messages) flat view 21 messages, 6 authors, 2021-03-05

Re: [PATCH 5/7] printk: Make %pS and friends print module build ID

From: Stephen Boyd <hidden>
Date: 2021-03-04 06:27:27
Also in: lkml

Quoting Steven Rostedt (2021-03-03 17:19:32)
On Wed, 03 Mar 2021 16:38:28 -0800
Stephen Boyd [off-list ref] wrote:
quoted
I'm starting to feel like nobody read the commit text, or I messed up
somehow and the commit text was confusing? :(
I read it, I'm just unfamiliar with it. I don't use pstore, and I'm not
sure what "crashdump" is. Do you mean the kexec/kdump? in which case
you can retrieve data within the kernel quite easily.
Right, I meant kexec/kdump. Given that it is easy to retrieve it in
kdump (presumably with some scripting?) I can remove this motivation
from the commit text.
I haven't used debuginfod (never heard of it before actually).
Got it. Hopefully the links I provided were good enough? I will provide
a link next time.
quoted
│ This is especially helpful for crash debugging with pstore or crashdump                                                                                                                                         
│ kernels. If we have the build ID for the module in the stacktrace we can                                                                                                                                        
│ request the debug symbols for the module from a remote debuginfod server                                                                                                                                        
│ or parse stacktraces at a later time with decode_stacktrace.sh by                                                                                                                                               
│ downloading the correct symbols based on the build ID. This cuts down on                                                                                                                                        
│ the amount of time and effort needed to find the correct kernel modules                                                                                                                                         
│ for a stacktrace by encoding that information into it.  
Are you saying it's common to have modules from different builds?
No.
quoted
In some distro (read: non-kernel dev) workflows the vmlinux isn't
shipped on the device and crash handling is done offline or much later.
Using the build ID[1] is a common way to identify the binary that's
running on the device. In conjunction with a debuginfod[2] server you
can download the symbols for a crash automatically if you have the build
ID information.

I can add a patch that updates decode_stacktrace.sh to show how it can
download the correct vmlinux/modules if it isn't provided on the
commandline.
Are you just trying to match modules with the builds that they were
created with?
Not exactly. I don't have a mapping of modules to the kernel they're
built/used with. I could create a mapping, but then that's something
else to maintain vs. what I have right now which is just a big database
of debuginfo mapped to build IDs (i.e. a debuginfod server).
quoted
If the debug symbols are on some public server then in theory we could
have some robot sitting on the mailing list that looks for stacktraces
and automatically replies with information about the line number/file
and even provides the code snippet for the code that's crashing from
that binary, because it's all stored in the full debuginfo builds.
Again, I have no idea how buildids are created or what they are used
for. This is the first time I've even heard about them. I'm all for
helping other people out to make their workflow easier, if it doesn't
make a mess for everyone else.
Makes sense and sounds good. Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help