Oops in 2.0.1 + aha1542 module

Kenneth MacDonald (kenny@remote.lib.ed.ac.uk)
Thu, 4 Jul 1996 13:49:36 +0100

Dear all,

I rushed home in a fit of excitement to compile up 2.0.1 yesterday,
and rebooted with an air of expectation. However, I got my first
kernel oops in many, many months. The aha1542 SCSI driver module had
just removed itself from memory (well, I suppose kerneld did), and I
got the following...

Unable to handle kernel NULL pointer dereference at virtual address c0000000
current->tss.cr3 = 00101000, Dr3 = 00101000
*pde = 00102067
*pte = 00000027
Oops: 0000
CPU: 0
EIP: 0010:[<00000000>]
EFLAGS: 00010202
eax: 00000000 ebx: 00040000 ecx: 00000064 edx: 0000000d
esi: 001a94e0 edi: 00000001 ebp: 00192884 esp: 00192874
ds: 0018 es: 0018 fs: 002b gs: 0018 ss: 0018
Process swapper (pid: 0, process nr: 0, stackpage=00190948)
Stack: 001110b0 00000001 ffffffff 00000001 001a9350 001170bb 001928a0 00192928
00000000 00009000 0010a5ab 0001b0eb 00000027 0019306c 00192928 00000000
00009000 00000000 00b80018 00190018 0000002b ffff0018 fffffffe 001096bc
Call Trace: [<001110b0>] [<001170bb>] [<0010a5ab>] [<001096bc>] [<0010a622>] [<001093d0>] [<00109243>]
Code: 01 00 00 00 6f ef 00 f0 c3 e2 00 f0 6f ef 00 f0 6f ef 00 f0
Aiee, killing interrupt handler
kfree of non-kmalloced memory: 00192990, next= 00000000, order=0
kfree of non-kmalloced memory: 00192980, next= 00000000, order=0
kfree of non-kmalloced memory: 00192e14, next= 00000000, order=0
idle task may not sleep
Last message repeated 4 times

Running ksymoops on it (btw, I didn't need the -liostream when
compiling it on my Debian 1.1 system) gives...

Using `/boot/System.map-2.0.1' to map addresses to symbols.

Trace: 1110b0 <timer_bh+f0/150>
Trace: 1170bb <do_bottom_half+3b/70>
Trace: 10a5ab <handle_bottom_half+b/20>
Trace: 1096bc <sys_idle+6c/80>
Trace: 10a622 <system_call+52/80>
Trace: 1093d0 <init>
Trace: 109243 <start_kernel+163/170>

Code: addl %eax,(%eax)
Code: addb %al,(%eax)
Code: outsl %ds:(%esi),(%dx)
Code: outl %eax,(%dx)
Code: addb %dh,%al
Code: ret
Code: loop 0000000b <_EIP+b>
Code: lock outsl %ds:(%esi),(%dx)
Code: outl %eax,(%dx)
Code: addb %dh,%al
Code: outsl %ds:(%esi),(%dx)
Code: outl %eax,(%dx)
Code: addb %dh,%al

kerneld had died at some point during this, and pstree gave a very
long output which I didn't capture. It seemed to have multiple init's
as children of eachother. Presumably memory corruption somewhere? The system didn't shut down cleanly - never got so far as unmounting the filesystems, and I just switched off and went to bed.

May I add that the 2.0.x kernels have shown a huge improvement on
performance on my 486DX2/66+16MB Striping across two swap devices has
certainly zipped things along too. I *love* this open OS!! Kudos to
everyone involved :)

Hope this information is of some use!

Best wishes,