0x90 0x90 - 1 year ago 114
Linux Question

How to read, understand, analyze and debug a Linux kernel panic?

Consider the following linux kernel dump stack trace, you can trigger a panic from the kernel source code by calling

panic("debugging a linux kernel panic");

[<001360ac>] (unwind_backtrace+0x0/0xf8) from [<00147b7c>] (warn_slowpath_common+0x50/0x60)
[<00147b7c>] (warn_slowpath_common+0x50/0x60) from [<00147c40>] (warn_slowpath_null+0x1c/0x24)
[<00147c40>] (warn_slowpath_null+0x1c/0x24) from [<0014de44>] (local_bh_enable_ip+0xa0/0xac)
[<0014de44>] (local_bh_enable_ip+0xa0/0xac) from [<0019594c>] (bdi_register+0xec/0x150)

  • In
    what the
    stands for?

  • How can I see the C code of

  • How to interpret the panic's content?

mux mux
Answer Source

It's just an ordinary backtrace, those functions are called in reverse order (first one called was called by the previous one and so on):


The bdi_register+0xec/0x150 is the symbol + the offset/length there's more information about that in Understanding a Kernel Oops and how you can debug a kernel oops. Also there's this excellent tutorial on Debugging the Kernel

Note: as suggested below by Eugene, you may want to try addr2line first, it still needs an image with debugging symbols though, for example

addr2line -e vmlinux_with_debug_info 0019594c(+offset)

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download