[Lazarus] External SigFPE

Ludo Brands ludo.brands at free.fr
Sat Jun 29 08:08:33 CEST 2013


On 06/28/2013 11:38 PM, Dave Coventry wrote:
> The iScale variable at this point is 1.1394385252832742, so clearly the
> debugger is not actually indicating the correct cause of the exception.
> 
> Can anyone offer a way to try to seek out the cause?
> 
8087 style exceptions are raised on the next floating point instruction
for speed optimization. If you want to raise the exception on the
correct location you should insert an fwait opcode after every floating
point operation which is very expensive.
See what happens in the code that is calling the procedure. If any
external code is involved, then you could consider masking some floating
point exceptions. Freepascal (Delphi compatible) enables all exceptions
which is not the default for fe. gcc. Use the SetExceptionMask function
in unit mask for that.

For more info see
http://www.c-jump.com/CIS77/reference/Intel/CIS77_24319002/pg_0201.htm

Ludo




More information about the Lazarus mailing list