| 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 | 
|---|