[ENBD] fr1 hangs when trying to access raid device..

Peter T. Breuer enbd@lists.community.tummy.com
Tue, 4 Feb 2003 20:32:30 +0100 (MET)


"A month of sundays ago [Arve Emil Myr_s] wrote:"
[Charset iso-8859-1 unsupported, filtering to ASCII...]
> >> This is the result form a test with "dd if=/dev/zero of=/dev/md0 bs=1024 count=200" on a no-smp kernel with smp disabled >in bios and the same loop setup as used earlyer..
> >
> >OK.
> >
> >> in the shell i get:
> >> 
> >> 200+0 records in
> >> 200+0 records out
> >> Segmentation fault
> >
> >Well it segfaulted after finishing, so that must be in close!
> >
> >It's certainly curious. Can you do read? (we see above that writes have
> >problems).
> 
> no.. it segfaults before the records in/out is written to shell..
> .
> >
> >> and in syslog:
> >
> >You must pass this through ksymoops.  The numbers are not meaningful in
> >themselves.  You have to translate the addresses to function names.  Can
> >you do that, please?
> 
> like this?? :

No.  You should pass the oops message through it.

> vserv:~ # ksymoops

> Feb  4 17:20:56 vserv kernel: Call Trace:    [<c01a21e6>] [<c01a24dc>] [<c01a26e8>] [<c01a2be2>] [<c01a312e>]
> Feb  4 17:20:56 vserv kernel:   [<c01a31ed>] [<c013730c>] [<c01373e6>] [<c0137428>] [<c013750a>] [<c013c293>]
> Feb  4 17:20:56 vserv kernel:   [<c013cd08>] [<c0137032>] [<c013570d>] [<c013578e>] [<c0108eff>]

It didn't resolve. Make sure the module is loaded at the time.


Aha .... now here is some stuff that resolved! 

> >>EIP; fad24c08 <[fr1]do_fr1_request+28/130>   <=====

OK, it's in the fr1 request function. Now that's quite basic. There
should be nothing wrong here. It's only about 40 bytes into the
function too. The function is about 200 bytes long, so that's 
20% in. It's about 80 lines. So that's about line 16.

> Feb  4 16:51:10 vserv kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000010

It asks for the 10th byte of a null address.


> Feb  4 19:28:30 vserv kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000010

Same.

Would you please make sure that the loop in do_fr1_request starts:

     while (!list_empty (&q->queue_head)) {

And my personal guess is that it gets a null request. Please uncomment
the printk(s) in that function. You many uncomment all printk's, in
fact! That will give some more clues. I'll have a look at the assembler
to see if I recognize the point.


Peter