Hi Adhemerval, In the error case, the new code mistakenly masks all floating-point exceptions (i.e. as if someone had called fedisableexcept (FE_ALL_EXCEPT)). This is because the FNSTENV instruction is documented as "Saves the current FPU operating environment at the memory location specified with the destination operand, and then masks all floating-point exceptions." The mistake came from my initial proposed fix of BZ 30990. Sorry about that. Here's a proposed fix, on top of your patch. I've verified that the sequence of instructions __asm__ ("fnstenv %0" : "=m" (*&temp)); __asm__ volatile ("fldcw %0" : : "m" (*&temp.__control_word)); does restore the exceptions trapping bits. Bruno