[PATCH] arm64: defconfig: Disable DEBUG_INFO

Will Deacon will at kernel.org
Thu Mar 4 14:48:34 GMT 2021


On Thu, Mar 04, 2021 at 02:36:47PM +0000, Mark Brown wrote:
> On Thu, Mar 04, 2021 at 12:56:24PM +0000, Will Deacon wrote:
> 
> > Hmm. Doing this means ./scripts/faddr2line no longer works with the vmlinux,
> > which means if somebody forgets to enable DEBUG_INFO they're in for a
> > really hard time debugging when something goes wrong.
> 
> Assuming they're aware of that script in the first place and try to
> translate addreses with it rather just using the function name in the
> stack trace, and aren't able to easily rebuild if they decide that it's
> something that's useful.  What people do is going to depend a lot on
> their use cases.

I use ./scripts/faddr2line all the time to decode the function+offset from
the stacktrace. For example:

$ ./scripts/faddr2line vmlinux gic_handle_irq+0x64/0x120
gic_handle_irq+0x64/0x120:
gic_handle_irq at drivers/irqchip/irq-gic-v3.c:671

where I pulled "gic_handle_irq+0x64/0x120" straight out of this backtrace:

[    1.947342] Call trace:
[    1.947576]  dump_backtrace+0x0/0x1cc
[    1.948304]  show_stack+0x18/0x64
[    1.948637]  dump_stack+0xcc/0x14c
[    1.948938]  panic+0x14c/0x360
[    1.949188]  sysrq_handle_term+0x0/0x90
[    1.949645]  __handle_sysrq+0x150/0x178
[    1.950044]  handle_sysrq+0x2c/0x38
[    1.950323]  pl011_fifo_to_tty+0x104/0x218
[    1.950659]  pl011_int+0x200/0x484
[    1.951025]  __handle_irq_event_percpu+0x84/0x168
[    1.951633]  handle_irq_event+0x60/0x13c
[    1.952200]  handle_fasteoi_irq+0xf4/0x1c8
[    1.952688]  __handle_domain_irq+0x88/0xcc
[    1.953075]  gic_handle_irq+0x64/0x120
[    1.953447]  el1_irq+0xb4/0x180
[    1.953778]  arch_cpu_idle+0x18/0x28
[    1.954109]  default_idle_call+0x20/0x5c
[    1.954459]  do_idle+0xfc/0x290
[    1.954709]  cpu_startup_entry+0x24/0x28
[    1.955179]  rest_init+0xd8/0xe8
[    1.955516]  arch_call_rest_init+0x10/0x1c
[    1.955929]  start_kernel+0x32c/0x44c

> > Why can't the CI systems just disable DEBUG_INFO themselves instead of
> > changing defconfig for everybody?
> 
> What's more likely is that they can just increase the amount of space
> they allocate to jobs (that's certainly what KernelCI does).  Testing
> modified versions of configurations isn't great as half the point of
> using the standard configurations is that everyone's working to the same
> thing and should in theory be seeing the same stuff, it's easier to name
> a standard config than name a standard config and a list of tweaks
> applied to it.

I'd be fine if arm64 build reports came back as "defconfig+DEBUG_INFO=n"
and the CI just ran ./scripts/config -d DEBUG_INFO as part of its build
step. For runtime testing, however, having the full vmlinux available is
really helpful if we need to debug.

> This is about picking a sensible default, there's always going to be
> cases where someone wants the other value (otherwise it wouldn't be a
> config option).  The contention is that there's a lot more builds being
> slowed down by the extra I/O and disk space being burned than benefit to
> people who end up with the debug info turned on and actively use it but
> these aren't direct tradeoffs so you can't categorically say something
> one way or the other.  At the minute defconfig actually results in a
> bigger build tree than an allmodconfig for me (6.8G vs 5.2G) which
> doesn't seem like what I'd expect.

I suppose I'm of the opinion that debug info is a waste of time until you
need it, and then it's suddenly invaluable. So I'd prefer it to be there by
default, as I don't think the extra I/O or disk space is a concern outside
of CI. But it would be good to hear what others have to say.

Will



More information about the linux-arm-kernel mailing list