Re: oops

Ion Badulescu (ionut@moisil.wal.rhno.columbia.edu)
Wed, 4 Dec 1996 01:18:03 -0500 (EST)


On Tue, 3 Dec 1996, Ryan Smith-Roberts wrote:

> First oops in a while.
>
> This is with 2.0.25 on a Pentium 60.
>
> Probably my cheap RAM.

Probably. See below..

> eax: 00a34cb4 ebx: 002dc810 ecx: 00000000 edx: 04000000
^^^^^^^^^^^^^
This is the whole sequence of assembly (in my vmlinux):

001119cc <do_fork+314> movl $0x100,0x10(%esp,1)
001119d4 <do_fork+31c> movl 0x0(%ebp),%edx
001119d7 <do_fork+31f> addl $0x4,%ebp
001119da <do_fork+322> movl %edx,(%eax)
001119dc <do_fork+324> addl $0x4,%eax
001119df <do_fork+327> testl %edx,%edx
001119e1 <do_fork+329> je 001119e7 <do_fork+32f>
001119e3 <do_fork+32b> incw 0xe(%edx)
001119e7 <do_fork+32f> decl 0x10(%esp,1)
001119eb <do_fork+333> jne 001119d4 <do_fork+31c>

The oops occurs on incw; now obviously 0x04000000 is not a valid pointer
and it should have been 0, in which case the testl/je sequence would have
avoided the incw. Again, 0x04000000 differs from 0 by just one bit.. and
it's been loaded from memory/cache at <do_fork+322>, so bad memory is
definitely something to look into...

Ionut

--
  It is better to keep your mouth shut and be thought a fool,
            than to open it and remove all doubt.