Opened 9 years ago
Closed 9 years ago
#9740 closed Bugs (fixed)
"-ftrapv" + multiprecision results in crash at startup
Reported by: | MaxBarraclough | Owned by: | John Maddock |
---|---|---|---|
Milestone: | To Be Determined | Component: | multiprecision |
Version: | Boost 1.55.0 | Severity: | Problem |
Keywords: | Cc: |
Description
If the following file is compiled with g++ or clang++ without using the "-ftrapv" flag, it runs fine, irrespective of which lines are commented out.
If we compile with "-ftrapv", with either of the causes crash lines uncommented, then the program will crash on start-up, before even entering the "main" function. (The crashy code lives in a function which is never called.)
This is true of both g++ and clang++.
I am using Boost 1.55, g++ 4.8.1, clang 3.2, on Mint GNU/Linux, x86-64.
The -ftrapv flag ( described in gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Code-Gen-Options.html#index-ftrapv-2326 (spam-detection forced me to sabotage the link) ) generates traps for signed overflow on addition, subtraction, multiplication operations.
#include <boost/multiprecision/cpp_dec_float.hpp> #include <boost/version.hpp> #if ( BOOST_VERSION != 105500 ) #error Boost 1.55 please #endif void neverCalled() { //boost::multiprecision::cpp_dec_float_100 e; // ok //boost::multiprecision::cpp_dec_float_100 f = 42; // ok //boost::multiprecision::cpp_dec_float_100 g = 42.0f; // causes crash if -ftrapv is used boost::multiprecision::cpp_dec_float_100 h = 42.0; // causes crash if -ftrapv is used } int main() { return 0; }
Attachments (1)
Change History (4)
by , 9 years ago
Attachment: | screenshot.png added |
---|
comment:2 by , 9 years ago
Partial fix here: https://github.com/boostorg/multiprecision/commit/bdacea2934e13dd5bab52576525efaa41bf15334
This still doesn't get all the tests passing with -ftrapv but it's much better than it was (and fixes the original test cases).
comment:3 by , 9 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Completed fixes: https://github.com/boostorg/multiprecision/commit/3317ee0d4a99b4cb8fd467ef9304320c02952141
That gets all of our tests running with -ftrapv, which is not to say there may not be other hidden traps here and there.
Screenshot of example code being compiled and run