Re: OOPS in 2.0.24

Linus Torvalds (torvalds@cs.helsinki.fi)
Thu, 14 Nov 1996 09:27:30 +0200 (EET)


On Wed, 13 Nov 1996, Taner Halicioglu wrote:
>
> Linux BOOM.NET 2.0.24 #2 Tue Nov 5 21:29:24 PST 1996 i486
> 6:23pm up 22:44, 8 users, load average: 0.17, 0.14, 0.12
>
> This was a non-fatal oops, but I thought I'd pass it along:

What CPU do you have? This _looks_ like the panic that some people saw
with Cyrix 486 clone chips.

> Unable to handle kernel paging request at virtual address 00000004

Note the address: 00000004. That was one of the hall-marks of the Cyrix
bug. See later.

> current->tss.cr3 = 00f3b000, 8r3 = 00f3b000
> *pde = 00000000
> Oops: 0002
> CPU: 0
> EIP: 0010:[<0011b8ca>]
> EFLAGS: 00010206
> eax: 00001000 ebx: 00001000 ecx: 00000400 edx: 0202f000
> esi: 0202f000 edi: 40007000 ebp: 0026798c esp: 00fb9f58
> ds: 0018 es: 002b fs: 002b gs: 002b ss: 0018
> Process tcsh (pid: 8972, process nr: 39, stackpage=00fb9000)
> Stack: 40000018 01e66580 00000000 00001000 003d06c8 00000000 00000000 00000000
> 00000000 00000001 00000001 00000000 00000000 00000000 00000000 00121d8a
> 003d06c8 01e66580 40007000 00001000 01e36810 00001000 40007000 bfffdc0c
> Call Trace: [<00121d8a>] [<0010a822>]
> Code: f3 a5 83 e3 03 89 d9 f3 a4 07 ff 4d 14 01 44 24 44 01 44 24

Ok, this code disassembles to

repz movsl %ds:(%esi),%es:(%edi)

which was the other thing about the Cyrix bug: it happened for "rep ; movs".
Note especially the values of %esi and %edi: both are perfectly valid
pointers (%esi is a kernel pointer, while %edi is a user-space pointer).

_Neither_ pointer is zero. Thus the above instruction should never ve
avle to result in a page fault with the address 00000004, because the
above instruction simply shouldn't touch that virtual address at all.

> Nothing fancy in my config... just IDE CDROM, PAS 16, and MPU-401.
>
> Machine is an i486 DX4/100, 36M RAM.
>
> I'm prolly forgetting some other vital info, so lemme know ;-)

Is that "i486" really an _i_ 486? The only cases of the above kind of
behaviour that I've seen has been for Cyrix chips.

Linus