Okay, I can confirm the bug is fixed.

It's insane this bug did not cause any more problems. Every call into every C function that uses floating point could have been affected (OpenGL, BLAS, etc)

On Fri, Apr 3, 2009 at 10:47 PM, Peter Verswyvelen <bugfact@gmail.com> wrote:
Ouch, what a waste of time on my side :-( 

This bugfix is not mentioned in the "notable bug fixes" here 

Since this is such a severe bug, I would recommend listing it :)

Anyway, I have a very small repro test case now. Will certainly test this with GHC 6.10.2. 

On Fri, Apr 3, 2009 at 10:35 PM, Ian Lynagh <igloo@earth.li> wrote:
On Fri, Apr 03, 2009 at 10:10:17PM +0200, Peter Verswyvelen wrote:
> I tried both precise and fast, but that did not help. Compiling to SSE2
> fixed it, since that does not use a floating point stack I guess.

You didn't say what version of GHC you are using, but it sounds like
this might already be fixed in 6.10.2 by:

Tue Nov 11 12:56:19 GMT 2008  Simon Marlow <marlowsd@gmail.com>
 * Fix to i386_insert_ffrees (#2724, #1944)
 The i386 native code generator has to arrange that the FPU stack is
 clear on exit from any function that uses the FPU.  Unfortunately it
 was getting this wrong (and has been ever since this code was written,
 I think): it was looking for basic blocks that used the FPU and adding
 the code to clear the FPU stack on any non-local exit from the block.
 In fact it should be doing this on a whole-function basis, rather than
 individual basic blocks.


Thanks
Ian