Re: Ooops in 1.3.85

Linus Torvalds (torvalds@cs.helsinki.fi)
Thu, 11 Apr 1996 12:43:51 +0300 (EET DST)


> Hi!
>
> I just got following Oops on a Cyrix DLC 40... You said you were
> interested.
>
> (Linux 1.3.85,standard slackware 3.0 system,Cyrix 486 DLC 40,gcc 2.7.0)
>
> jet:~/music# lha d kmids.lzh kashmir1.mid
> Unable to handle kernel paging request at virtual address 00000004
> current->tss.cr3 = 0042a000, %cr3 = 0042a000
> *pde = 00000000
> Oops: 0002
> CPU: 0
> EIP: 0010:[<0012f4ff>]
> EFLAGS: 00010202
> eax: 40005748 ebx: 000008b8 ecx: 000008b8 edx: 40005749
> esi: 40005748 edi: 40005000 ebp: 0001db98 esp: 00434cd8
> ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
> Process lharc (pid: 1547, process nr: 21, stackpage=00434000)
> Stack: 0001dbf8 40000000 0012f9a4 40005748 080010b0 0000002b 00000018
> 00fffe00 00000812 00000003 40005794 40005748 00000004 00fea680
> 001301f2 00434dcc 00fec690 00434d98 001d80e4 fffffff8 00434e6c
> 00000000 00000001 00000002 Call Trace: [<0012f9a4>] [<001301f2>]
> [<0019966a>] [<00130014>] [<0012a5db>] [<0012a7ca>] [<00109c72>]
> [<0010a469>] Code: 64 c6 00 00 4b 75 f6 5b 5e c3 90 90 90 90 90 90 90 83 ec
> 0c Segmentation fault
> Using `System.map' to map addresses to symbols.
>
> >>EIP: 12f4ff <padzero+2f/40>
> Trace: 12f9a4 <load_elf_interp+214/270>
> Trace: 1301f2 <load_elf_binary+6c2/b70>
> Trace: 19966a <allocate_device+2ca/330>
> Trace: 130014 <load_elf_binary+4e4/b70>
> Trace: 12a5db <search_binary_handler+2b/b0>
> Trace: 12a7ca <do_execve+16a/1c0>
> Trace: 109c72 <sys_execve+32/60>
> Trace: 10a469 <system_call+59/a0>
>
> Code: 12f4ff <padzero+2f/40> movb $0x0,%fs:(%eax)

Ok, this does look like _exactly_ the same problem as on the other Cyrix CPU,
except now it isn't a "rep movsl", but a perfectly normal access to the %fs
segment.

Again, %eax = 40005748, so the above instruction should definitely not result
in a kernel paging request with virtual address 00000004..

It's probably a real page-fault, it's just %cr2 that is messed up on the cyrix
CPU's. Strange. Why 4?

Linus