Changes in src/main.cc [74330e7:7006ba5]
- File:
-
- 1 edited
-
src/main.cc (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/main.cc
r74330e7 r7006ba5 10 10 // Created On : Fri May 15 23:12:02 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Feb 8 08:33:50 202013 // Update Count : 6 3312 // Last Modified On : Mon Dec 16 17:55:53 2019 13 // Update Count : 627 14 14 // 15 15 … … 105 105 106 106 static void backtrace( int start ) { // skip first N stack frames 107 enum { Frames = 50 , }; // maximum number of stack frames107 enum { Frames = 50 }; 108 108 void * array[Frames]; 109 size_t size = ::backtrace( array, Frames );109 int size = ::backtrace( array, Frames ); 110 110 char ** messages = ::backtrace_symbols( array, size ); // does not demangle names 111 111 … … 114 114 115 115 // skip last 2 stack frames after main 116 for ( unsignedint i = start; i < size - 2 && messages != nullptr; i += 1 ) {116 for ( int i = start; i < size - 2 && messages != nullptr; i += 1 ) { 117 117 char * mangled_name = nullptr, * offset_begin = nullptr, * offset_end = nullptr; 118 118 … … 180 180 } // sigSegvBusHandler 181 181 182 static void sigFpeHandler( SIGPARMS ) {183 const char * msg;184 185 switch ( sfp->si_code ) {186 case FPE_INTDIV: case FPE_FLTDIV: msg = "divide by zero"; break;187 case FPE_FLTOVF: msg = "overflow"; break;188 case FPE_FLTUND: msg = "underflow"; break;189 case FPE_FLTRES: msg = "inexact result"; break;190 case FPE_FLTINV: msg = "invalid operation"; break;191 default: msg = "unknown";192 } // choose193 cerr << "Computation error " << msg << " at location " << sfp->si_addr << endl194 << "Possible cause is constant-expression evaluation invalid." << endl;195 backtrace( 2 ); // skip first 2 stack frames196 abort(); // cause core dump for debugging197 } // sigFpeHandler198 199 182 static void sigAbortHandler( SIGPARMS ) { 200 183 backtrace( 6 ); // skip first 6 stack frames … … 210 193 Signal( SIGSEGV, sigSegvBusHandler, SA_SIGINFO ); 211 194 Signal( SIGBUS, sigSegvBusHandler, SA_SIGINFO ); 212 Signal( SIGFPE, sigFpeHandler, SA_SIGINFO );213 195 Signal( SIGABRT, sigAbortHandler, SA_SIGINFO ); 214 196
Note:
See TracChangeset
for help on using the changeset viewer.