| OLD | NEW |
| 1 // Copyright (c) 2010 Google Inc. | 1 // Copyright (c) 2010 Google Inc. |
| 2 // All rights reserved. | 2 // All rights reserved. |
| 3 // | 3 // |
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
| 6 // met: | 6 // met: |
| 7 // | 7 // |
| 8 // * Redistributions of source code must retain the above copyright | 8 // * Redistributions of source code must retain the above copyright |
| 9 // notice, this list of conditions and the following disclaimer. | 9 // notice, this list of conditions and the following disclaimer. |
| 10 // * Redistributions in binary form must reproduce the above | 10 // * Redistributions in binary form must reproduce the above |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 return 0; | 111 return 0; |
| 112 } | 112 } |
| 113 | 113 |
| 114 namespace google_breakpad { | 114 namespace google_breakpad { |
| 115 | 115 |
| 116 namespace { | 116 namespace { |
| 117 // The list of signals which we consider to be crashes. The default action for | 117 // The list of signals which we consider to be crashes. The default action for |
| 118 // all these signals must be Core (see man 7 signal) because we rethrow the | 118 // all these signals must be Core (see man 7 signal) because we rethrow the |
| 119 // signal after handling it and expect that it'll be fatal. | 119 // signal after handling it and expect that it'll be fatal. |
| 120 const int kExceptionSignals[] = { | 120 const int kExceptionSignals[] = { |
| 121 SIGSEGV, SIGABRT, SIGFPE, SIGILL, SIGBUS | 121 SIGSEGV, SIGABRT, SIGFPE, SIGILL, SIGBUS, SIGTRAP |
| 122 }; | 122 }; |
| 123 const int kNumHandledSignals = | 123 const int kNumHandledSignals = |
| 124 sizeof(kExceptionSignals) / sizeof(kExceptionSignals[0]); | 124 sizeof(kExceptionSignals) / sizeof(kExceptionSignals[0]); |
| 125 struct sigaction old_handlers[kNumHandledSignals]; | 125 struct sigaction old_handlers[kNumHandledSignals]; |
| 126 bool handlers_installed = false; | 126 bool handlers_installed = false; |
| 127 | 127 |
| 128 // InstallAlternateStackLocked will store the newly installed stack in new_stack | 128 // InstallAlternateStackLocked will store the newly installed stack in new_stack |
| 129 // and (if it exists) the previously installed stack in old_stack. | 129 // and (if it exists) the previously installed stack in old_stack. |
| 130 stack_t old_stack; | 130 stack_t old_stack; |
| 131 stack_t new_stack; | 131 stack_t new_stack; |
| (...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 descriptor.UpdatePath(); | 756 descriptor.UpdatePath(); |
| 757 if (!google_breakpad::WriteMinidump(descriptor.path(), | 757 if (!google_breakpad::WriteMinidump(descriptor.path(), |
| 758 child, | 758 child, |
| 759 child_blamed_thread)) | 759 child_blamed_thread)) |
| 760 return false; | 760 return false; |
| 761 | 761 |
| 762 return callback ? callback(descriptor, callback_context, true) : true; | 762 return callback ? callback(descriptor, callback_context, true) : true; |
| 763 } | 763 } |
| 764 | 764 |
| 765 } // namespace google_breakpad | 765 } // namespace google_breakpad |
| OLD | NEW |