Re: [RFC] kallsyms: embed source file:line info in kernel stack traces

James Bottomley <[email protected]> Tue, 03 Mar 2026 07:58:58 -0500
Newsgroups dev.linux.lists.ksummit
Message-ID <5c6e89540a55521f622f820e92ef370e82e285f4.camel@HansenPartnership.com>
On Tue, 2026-03-03 at 07:47 -0500, Sasha Levin wrote:
> On Tue, Mar 03, 2026 at 10:31:46AM +0100, Jiri Slaby wrote:
> > On 03. 03. 26, 9:11, Geert Uytterhoeven wrote:
> > > On Tue, 3 Mar 2026 at 07:26, Richard Weinberger <[email protected]>
> > > wrote:
> > > > > Von: "Sasha Levin" <[email protected]>
> > > > > Add CONFIG_KALLSYMS_LINEINFO, which embeds a compact address-
> > > > > to-line
> > > > > lookup table in the kernel image so stack traces directly
> > > > > print source
> > > > > file and line number information:
> > > 
> > > > > Memory footprint measured with a simple KVM guest x86_64
> > > > > config:
> > > > > 
> > > > >  Table: 4,597,583 entries from 4,841 source files
> > > > >    lineinfo_addrs[]     4,597,583 x u32  = 17.5 MiB
> > > > >    lineinfo_file_ids[]  4,597,583 x u16  =  8.8 MiB
> > > > >    lineinfo_lines[]     4,597,583 x u32  = 17.5 MiB
> > > > >    file_offsets + filenames              ~  0.1 MiB
> > > > >    Total .rodata increase:              ~ 44.0 MiB
> > > > > 
> > > > >  vmlinux (stripped):  529 MiB -> 573 MiB  (+44 MiB / +8.3%)
> > > > 
> > > > Hm, that's a significant increase.
> > > 
> > > Other random idea: this data is only needed in case of a crash.
> > > Perhaps it can be stored compressed, and only be decompressed
> > > when needed, or even during look-up?
> > 
> > But obviously not when dumping OOM stack traces :P.
> 
> Right - I really wanted to avoid memory allocations or disk I/O here.
> 
> I'm sure we can come up with more efficient ways to store this
> information - I wanted to keep the initial version simple and easy
> for review.

When the system is crashing, efficiency (at least as long as the user
doesn't notice) isn't typically required, so if you did a linear search
instead of a binary one you could use compressed data that's amenable
to decompression using a stream algorithm (i.e. only requires a fixed
length buffer, not decompression of the entire thing), then you stream
through the compressed data a chunk at a time looking for the match.

Regards,

James