Re: FPU exception, kernel panic

2001-05-07 Thread Dag-Erling Smorgrav

Valentin Nechayev <[EMAIL PROTECTED]> writes:
> (I cannot even guarantree 50% this is the same problem, but...)
> There were some reports in current@ about incorrect usage of i586_bzero()
> which uses FPU for zero-filling. It generated random kernel panics mainly
> on K6-2, also on P5-MMX and similars. You can try to disable such bzero,
> but IMHO it is reasonable to upgrade to 4.3-RELEASE (RELENG_4_3) first.

1) this bug only occurs on -CURRENT systems that have interrupt
   preemption enabled (i.e. anything newer than february)

2) the symptoms are nowhere near what's described here anyway - you'd
   see the kernel stack getting smashed, not an FPU exception.

DES
-- 
Dag-Erling Smorgrav - [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: FPU exception, kernel panic

2001-05-07 Thread David Malone

On Mon, May 07, 2001 at 08:32:06AM +0300, Valentin Nechayev wrote:
>  Sun, May 06, 2001 at 17:14:08, rakshe (Rohit Rakshe) wrote about "Re: FPU 
>exception, kernel panic": 
> 
> (I cannot even guarantree 50% this is the same problem, but...)
> There were some reports in current@ about incorrect usage of i586_bzero()
> which uses FPU for zero-filling. It generated random kernel panics mainly
> on K6-2, also on P5-MMX and similars. You can try to disable such bzero,
> but IMHO it is reasonable to upgrade to 4.3-RELEASE (RELENG_4_3) first.

This problem should not happen in 4.X as it is a side effect of the
SMP-NG stuff in -current.

David.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: FPU exception, kernel panic

2001-05-07 Thread Valentin Nechayev

 Sun, May 06, 2001 at 17:14:08, rakshe (Rohit Rakshe) wrote about "Re: FPU exception, 
kernel panic": 

(I cannot even guarantree 50% this is the same problem, but...)
There were some reports in current@ about incorrect usage of i586_bzero()
which uses FPU for zero-filling. It generated random kernel panics mainly
on K6-2, also on P5-MMX and similars. You can try to disable such bzero,
but IMHO it is reasonable to upgrade to 4.3-RELEASE (RELENG_4_3) first.

> I guessed I asked too much. Can someone please tell me just this:
> 
> "How do I translate 48 bit address (segment descriptor:offset) to a
> linear address which gdb can understand ?"
> >
> > I modified some TCP and UDP code in FreeBSD 4.1 and suddenly started
> > getting (almost repeatable) kernel panics. This is how it looks like
> > from remote gdb:
> >
> > (kgdb) bt
> > #0  0xc0192e58 in panic (fmt=0xc035c076 "npxintr from nowhere") at
> > ../../kern/kern_shutdown.c:550
> > #1  0xc0303c6c in npx_intr (dummy=0x0) at ../../i386/isa/npx.c:721
> > #2  0xc02e1052 in Xfpu ()
> > #3  0xc019824d in softclock () at ../../kern/kern_timeout.c:131
> > .
> > .
> > .
> > (kgdb) list
> > 126 } else {
> > 127 c->c_flags =
> > 128 (c->c_flags &
> > ~CALLOUT_PENDING);
> > 129 }
> > 130 splx(s);
> > 131 c_func(c_arg);
> > 132 s = splhigh();
> > 133 steps = 0;
> > 134 c = nextsoftcheck;
> > 135 }
> > .
> > .
> > .
> > (kgdb)
> > #1  0xc0303c6c in npx_intr (dummy=0x0) at ../../i386/isa/npx.c:721
> > 721 panic("npxintr from nowhere");
> > (kgdb) p npxproc
> > $5 = 0
> > (kgdb) p npx_exists
> > $6 = 1 '\001'
> > .
> > .
> > .
> > (kgdb) info all-registers
> > eax0x12 18
> > ecx0xc03a60a0   -1069916000
> > edx0x40 4194304
> > ebx0xcbc56540   -876255936
> > esp0xc0361354   0xc0361354
> > ebp0xc0361410   0xc0361410
> > esi0x40 4194304
> > edi0x40 4194304
> > eip0xc019824d   0xc019824d
> > eflags 0x346838
> > cs 0x8  8
> > ss 0x10 16
> > ds 0x400010 4194320
> > es 0x10 16
> > fs 0x0  0
> > gs 0x0  0
> > (kgdb) info float
> > status 0xc8f5: exceptions: INVALID DIVZ UNDERF LOS FPSTACK; flags: 1000;
> > top 1
> > control 0x6620: compute to 53 bits; round DOWN; mask: LOS;
> > warning: reserved bits on: 0x6000
> >
> > last instruction: opcode 0x2825; pc 0x71a4:0x2824c316; operand
> > 0xf800:0x8176640
> >  regno tag  msb  lsb  value
> > %st(7)valid 08179a802825  Denormal (0 as a double)
> > %st(6)valid 71a42824c316  Unnormal (NaN)
> > %st(5)valid 08176640282571a42824  Unnormal (NaN)
> > %st(4)valid c8910818f9380818f800  Unnormal (NaN)
> > %st(3)valid 282571a42824c316bfbf  Unnormal (NaN)
> > %st(2)valid e82808176620089c3000  Unnormal (NaN)
> > %st(1)valid 003200010001  Denormal (0 as a double)
> > %st(0) => valid 00240818f800  Denormal (0 as a double)
> >
> >
> > So, this means that there was a FPU exception in kernel, right ?
> >
> > 1. The code which I added in kernel does not use any floats. So I am
> > wondering why this problem should happen at all.
> >
> > 2. pc register in FPU should give address of the instruction which caused
> > this exception, right ?
> >
> > 3. If yes, how do I translate this 48 bit address in a linear address
> > which gdb can understand ?


/netch

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: FPU exception, kernel panic

2001-05-06 Thread Dag-Erling Smorgrav

Rohit Rakshe <[EMAIL PROTECTED]> writes:
> 1. The code which I added in kernel does not use any floats. So I am
> wondering why this problem should happen at all.

The kernel uses the FPU to optimize certain bcopy- or bzero-like
operations.

> 2. pc register in FPU should give address of the instruction which caused
> this exception, right ?

Possibly.  I'm not very familiar with the FPU.

> 3. If yes, how do I translate this 48 bit address in a linear address
> which gdb can understand ?

You don't.  FreeBSD uses a flat address space, you can disregard the
segment descriptor.

DES
-- 
Dag-Erling Smorgrav - [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: FPU exception, kernel panic

2001-05-06 Thread Rohit Rakshe

I guessed I asked too much. Can someone please tell me just this:

"How do I translate 48 bit address (segment descriptor:offset) to a
linear address which gdb can understand ?"






Thanks
- Rohit





On Sat, 5 May 2001, Rohit Rakshe wrote:

> Hi !
>
> I modified some TCP and UDP code in FreeBSD 4.1 and suddenly started
> getting (almost repeatable) kernel panics. This is how it looks like
> from remote gdb:
>
> (kgdb) bt
> #0  0xc0192e58 in panic (fmt=0xc035c076 "npxintr from nowhere") at
> ../../kern/kern_shutdown.c:550
> #1  0xc0303c6c in npx_intr (dummy=0x0) at ../../i386/isa/npx.c:721
> #2  0xc02e1052 in Xfpu ()
> #3  0xc019824d in softclock () at ../../kern/kern_timeout.c:131
> .
> .
> .
> (kgdb) list
> 126 } else {
> 127 c->c_flags =
> 128 (c->c_flags &
> ~CALLOUT_PENDING);
> 129 }
> 130 splx(s);
> 131 c_func(c_arg);
> 132 s = splhigh();
> 133 steps = 0;
> 134 c = nextsoftcheck;
> 135 }
> .
> .
> .
> (kgdb)
> #1  0xc0303c6c in npx_intr (dummy=0x0) at ../../i386/isa/npx.c:721
> 721 panic("npxintr from nowhere");
> (kgdb) p npxproc
> $5 = 0
> (kgdb) p npx_exists
> $6 = 1 '\001'
> .
> .
> .
> (kgdb) info all-registers
> eax0x12 18
> ecx0xc03a60a0   -1069916000
> edx0x40 4194304
> ebx0xcbc56540   -876255936
> esp0xc0361354   0xc0361354
> ebp0xc0361410   0xc0361410
> esi0x40 4194304
> edi0x40 4194304
> eip0xc019824d   0xc019824d
> eflags 0x346838
> cs 0x8  8
> ss 0x10 16
> ds 0x400010 4194320
> es 0x10 16
> fs 0x0  0
> gs 0x0  0
> (kgdb) info float
> status 0xc8f5: exceptions: INVALID DIVZ UNDERF LOS FPSTACK; flags: 1000;
> top 1
> control 0x6620: compute to 53 bits; round DOWN; mask: LOS;
> warning: reserved bits on: 0x6000
>
> last instruction: opcode 0x2825; pc 0x71a4:0x2824c316; operand
> 0xf800:0x8176640
>  regno tag  msb  lsb  value
> %st(7)valid 08179a802825  Denormal (0 as a double)
> %st(6)valid 71a42824c316  Unnormal (NaN)
> %st(5)valid 08176640282571a42824  Unnormal (NaN)
> %st(4)valid c8910818f9380818f800  Unnormal (NaN)
> %st(3)valid 282571a42824c316bfbf  Unnormal (NaN)
> %st(2)valid e82808176620089c3000  Unnormal (NaN)
> %st(1)valid 003200010001  Denormal (0 as a double)
> %st(0) => valid 00240818f800  Denormal (0 as a double)
>
>
> So, this means that there was a FPU exception in kernel, right ?
>
> 1. The code which I added in kernel does not use any floats. So I am
> wondering why this problem should happen at all.
>
> 2. pc register in FPU should give address of the instruction which caused
> this exception, right ?
>
> 3. If yes, how do I translate this 48 bit address in a linear address
> which gdb can understand ?
>
>
> Thanks for help !
>
>
> - Rohit
>
>
> To Unsubscribe: send mail to [EMAIL PROTECTED]
> with "unsubscribe freebsd-hackers" in the body of the message
>


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



FPU exception, kernel panic

2001-05-05 Thread Rohit Rakshe

Hi !

I modified some TCP and UDP code in FreeBSD 4.1 and suddenly started
getting (almost repeatable) kernel panics. This is how it looks like
from remote gdb:

(kgdb) bt
#0  0xc0192e58 in panic (fmt=0xc035c076 "npxintr from nowhere") at
../../kern/kern_shutdown.c:550
#1  0xc0303c6c in npx_intr (dummy=0x0) at ../../i386/isa/npx.c:721
#2  0xc02e1052 in Xfpu ()
#3  0xc019824d in softclock () at ../../kern/kern_timeout.c:131
.
.
.
(kgdb) list
126 } else {
127 c->c_flags =
128 (c->c_flags &
~CALLOUT_PENDING);
129 }
130 splx(s);
131 c_func(c_arg);
132 s = splhigh();
133 steps = 0;
134 c = nextsoftcheck;
135 }
.
.
.
(kgdb)
#1  0xc0303c6c in npx_intr (dummy=0x0) at ../../i386/isa/npx.c:721
721 panic("npxintr from nowhere");
(kgdb) p npxproc
$5 = 0
(kgdb) p npx_exists
$6 = 1 '\001'
.
.
.
(kgdb) info all-registers
eax0x12 18
ecx0xc03a60a0   -1069916000
edx0x40 4194304
ebx0xcbc56540   -876255936
esp0xc0361354   0xc0361354
ebp0xc0361410   0xc0361410
esi0x40 4194304
edi0x40 4194304
eip0xc019824d   0xc019824d
eflags 0x346838
cs 0x8  8
ss 0x10 16
ds 0x400010 4194320
es 0x10 16
fs 0x0  0
gs 0x0  0
(kgdb) info float
status 0xc8f5: exceptions: INVALID DIVZ UNDERF LOS FPSTACK; flags: 1000;
top 1
control 0x6620: compute to 53 bits; round DOWN; mask: LOS;
warning: reserved bits on: 0x6000

last instruction: opcode 0x2825; pc 0x71a4:0x2824c316; operand
0xf800:0x8176640
 regno tag  msb  lsb  value
%st(7)valid 08179a802825  Denormal (0 as a double)
%st(6)valid 71a42824c316  Unnormal (NaN)
%st(5)valid 08176640282571a42824  Unnormal (NaN)
%st(4)valid c8910818f9380818f800  Unnormal (NaN)
%st(3)valid 282571a42824c316bfbf  Unnormal (NaN)
%st(2)valid e82808176620089c3000  Unnormal (NaN)
%st(1)valid 003200010001  Denormal (0 as a double)
%st(0) => valid 00240818f800  Denormal (0 as a double)


So, this means that there was a FPU exception in kernel, right ?

1. The code which I added in kernel does not use any floats. So I am
wondering why this problem should happen at all.

2. pc register in FPU should give address of the instruction which caused
this exception, right ?

3. If yes, how do I translate this 48 bit address in a linear address
which gdb can understand ?


Thanks for help !


- Rohit


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message