Re: FPU-intensive programs crashing with floating point exceptionon Cyrix MII

From: Linus Torvalds
Date: Sun Aug 21 2005 - 18:11:51 EST




On Sun, 21 Aug 2005, Ondrej Zary wrote:
>
> MATH ERROR: cwd = 0x37f, swd = 0x1820
>
> Pid: 1699, comm: mprime
> EIP: 0073:[<08181c73>] CPU: 0
> EIP is at 0x8181c73
> ESP: 007b:bf927ab4 EFLAGS: 00010202 Not tainted (2.6.12-pentium)
> EAX: 00000001 EBX: 00000000 ECX: 0000808d EDX: b7f09480
> ESI: b7455340 EDI: 080e01f0 EBP: bf927bf8 DS: 007b ES: 007b
> CR0: 8005003b CR2: b7ed6058 CR3: 006f0000 CR4: 00000080

Ahh, so it's actually all in user space. I was thinking that the Cyrix
chip might use the old external interrupt-based (as opposed to exception
16) FP error reporting, and that it could be some kind of asynchronous
error that raced with the kernel task switching (ie the interrupt had
triggered, and then the FPU control register had been modified before the
irq handler actually got to run).

But that doesn't seem to be the case.

I don't see _why_ that exception would happen, other than a CPU bug.

Can you dump more of the FP state (the kernel doesn't have helpers for
doing that, so you'd have to write the code to print out the state by
hand)? Maybe there's some clue there - denormals or something..

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/