Debug kernel panic with gdb?
Arvid Brodin
arvid.brodin at enea.com
Thu Mar 24 17:48:07 EDT 2011
Hi,
I'm trying to debug a kernel panic (something like this):
Unable to handle kernel NULL pointer dereference at virtual address 00000014
ptbr = 93959000 pgd = 93a0a000
Oops: Kernel access of bad area, sig: 11 [#1]
FRAME_POINTER chip: 0x01f:0x1e82 rev 2
Modules linked in: ftdi_sio usbserial
PC is at isp1760_irq+0xda/0x7f0
LR is at isp1760_irq+0x492/0x7f0
pc : [<901408be>] lr : [<90140c76>] Not tainted
sp : 93aa399c r12: fffffffe r11: 00000000
r10: 00000000 r9 : fffffffe r8 : 00000000
r7 : 93aa3a08 r6 : 93406400 r5 : 00820004 r4 : 00000003
r3 : 00000008 r2 : 00000002 r1 : fffffffd r0 : 93837000
Call trace:
[<90134abc>] usb_hcd_irq+0x50/0x54
[<900383da>] handle_IRQ_event+0x1e/0x40
[<90039098>] handle_level_irq+0x78/0x8c
...
This is on an AVR32 platform, and I'm building the kernel myself (cross
compiling). The image is then converted to a uImage before being loaded
to the target. Is there a way to get the following to work in this context?
$ gdb arch/avr32/boot/images/vmlinux.elf
...
Reading symbols from /home/.../linux-2.6.37/arch/avr32/boot/images/vmlinux.elf...done.
(gdb) list *isp1760_irq+0xda
0x9017ac36 is in isp1760_irq (include/linux/spinlock.h:285).
280 raw_spin_lock_init(&(_lock)->rlock); \
281 } while (0)
282
283 static inline void spin_lock(spinlock_t *lock)
284 {
285 raw_spin_lock(&lock->rlock);
286 }
287
288 static inline void spin_lock_bh(spinlock_t *lock)
289 {
The problem is that the line reported is totally wrong (this being very unhelpful
and confusing indeed - it tool me awhile to realise this!). I've also tried to
use gdb from the avr32 toolchain with the same result.
Is there a way to get this to work?
Thanks,
Arvid Brodin
Enea Services Stockholm AB
More information about the Kernelnewbies
mailing list