I have a multi-threaded application involved in scientific calculation on a Xeon workstation. It compiles well with icc70 on RedHat Linux 7.2. But it renders wrong result.
When I trace it with gdb , I found one function call returns (NaN) instead of a double value I expected. However, if I step in this function, everything turns out fine and it returns a double.
After some research, I noticed an article talking about a bug in gnu libc, which sporadically sets wrong floating point flag. So I enable the program to trap SIGFPE. It does not really help because the program stopped very soon at some float assignment statement.
I don't know if you guys met this before. Any comment? What else should I do? I am not sure if the program works in gcc since it is not a simple effort to gcc it.
Unexpected NaN as return value