[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 2.4.19 kernel panic



Karel Šín wrote:
> Hi, 
> I have downloaded the latest version of USB driver, but the "Kernel
> panic" 
> occures again. I have used the ksymoops to debug the message, but it
> didn't 
> help me. I am sending you the output of ksymoops in attachment. May be,
> you 
> find what's wrong and give me advice please.

I can't determine from the boot log if you're booting the board with the 
USB device connected.  (If you are, try connecting the device once the 
board has booted instead.  It wouldn't be an explanation for the crash, 
but it might be easier to determine what goes wrong.)

The ksymoops dump (the interesting part repeated below) should be read 
in reverse order; in other words, what appears at the top is what 
happened last.  Typically, you'll want to start looking at what happened 
before mmu_bus_fault/do_page_fault (indicating an invalid memory 
reference).  Since the dump is only a dump of the stack, it may not 
correspond exactly to the call sequence that led to the crash, meaning 
that you'll have to look at the source code to see if what is displayed 
in the dump is reasonable.

 > Trace; c00083e8 <printk+0/14c>
 > Trace; c0057d22 <show_stack+0/90>
 > Trace; c0057e7e <show_registers+cc/146>
 > Trace; c0057f4a <die_if_kernel+34/46>
 > Trace; c00083e8 <printk+0/14c>
 > Trace; c005b20a <do_page_fault+202/2b0>
 > Trace; c005b004 <handle_mmu_bus_fault+b4/b8>
 > Trace; c0057b42 <mmu_bus_fault+28/30>
 > Trace; c0059a80 <__down+2e/66>
 > Trace; c0006b62 <add_wait_queue+16/24>
 > Trace; c007363c <usb_register+50/98>
 > Trace; c00736b8 <usb_scan_devices+34/90>
 > Trace; c007367e <usb_register+92/98>
 > Trace; c0004086 <init+a/10c>
 > Trace; c0057c8c <kernel_thread+1c/28>

Time to look at the source: in usb.c usb_register() calls 
usb_scan_devices() so that part looks sane.  usb_scan_devices() does 
down() on a semaphore, and since __down is the last thing we can see 
before mmu_bus_fault it's probably in the neighborhood of where it 
crashes.  I'd suggest that you add printouts to usb_scan_devices() to 
find out on which line it crashes; then add printouts of the variables 
used there, to see if any pointer is null.

-- 
Orjan Friberg
Axis Communications