All of lore.kernel.org
 help / color / mirror / Atom feed
* Debug kernel panic with gdb?
@ 2011-03-24 21:48 Arvid Brodin
  2011-03-25 16:13 ` Arvid Brodin
  0 siblings, 1 reply; 3+ messages in thread
From: Arvid Brodin @ 2011-03-24 21:48 UTC (permalink / raw)
  To: kernelnewbies

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Debug kernel panic with gdb?
  2011-03-24 21:48 Debug kernel panic with gdb? Arvid Brodin
@ 2011-03-25 16:13 ` Arvid Brodin
  2011-03-25 19:19   ` Mulyadi Santosa
  0 siblings, 1 reply; 3+ messages in thread
From: Arvid Brodin @ 2011-03-25 16:13 UTC (permalink / raw)
  To: kernelnewbies

Arvid Brodin wrote:
> 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

To reply to my own email, the problem probably has to do with the fact that the
kernel is built with optimization. Modifying KBUILD_CFLAGS in the Makefile to 
specify -O1 made things a lot better (although you still cannot rely completely
on the line number reported). Unfortunately, the kernel won't build with -O0.

-- 
Arvid Brodin
Enea Services Stockholm AB

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Debug kernel panic with gdb?
  2011-03-25 16:13 ` Arvid Brodin
@ 2011-03-25 19:19   ` Mulyadi Santosa
  0 siblings, 0 replies; 3+ messages in thread
From: Mulyadi Santosa @ 2011-03-25 19:19 UTC (permalink / raw)
  To: kernelnewbies

On Fri, Mar 25, 2011 at 23:13, Arvid Brodin <arvid.brodin@enea.com> wrote:
> To reply to my own email, the problem probably has to do with the fact that the
> kernel is built with optimization. Modifying KBUILD_CFLAGS in the Makefile to
> specify -O1 made things a lot better (although you still cannot rely completely
> on the line number reported). Unfortunately, the kernel won't build with -O0.

make sure frame pointer is included too

-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-03-25 19:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-24 21:48 Debug kernel panic with gdb? Arvid Brodin
2011-03-25 16:13 ` Arvid Brodin
2011-03-25 19:19   ` Mulyadi Santosa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.