Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/crash/content/app/crashpad.h" | 5 #include "components/crash/content/app/crashpad.h" |
| 6 | 6 |
| 7 #include "base/debug/crash_logging.h" | |
| 7 #include "base/environment.h" | 8 #include "base/environment.h" |
| 8 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 9 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/numerics/safe_conversions.h" | 11 #include "base/numerics/safe_conversions.h" |
| 11 #include "base/path_service.h" | 12 #include "base/path_service.h" |
| 12 #include "base/strings/string16.h" | 13 #include "base/strings/string16.h" |
| 13 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
| 14 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
| 15 #include "build/build_config.h" | 16 #include "build/build_config.h" |
| 16 #include "components/crash/content/app/crash_reporter_client.h" | 17 #include "components/crash/content/app/crash_reporter_client.h" |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 106 // for it to do anything. | 107 // for it to do anything. |
| 107 // NOTE: This function is used by SyzyASAN to invoke a crash. If you change the | 108 // NOTE: This function is used by SyzyASAN to invoke a crash. If you change the |
| 108 // the name or signature of this function you will break SyzyASAN instrumented | 109 // the name or signature of this function you will break SyzyASAN instrumented |
| 109 // releases of Chrome. Please contact syzygy-team@chromium.org before doing so! | 110 // releases of Chrome. Please contact syzygy-team@chromium.org before doing so! |
| 110 int __declspec(dllexport) CrashForException( | 111 int __declspec(dllexport) CrashForException( |
| 111 EXCEPTION_POINTERS* info) { | 112 EXCEPTION_POINTERS* info) { |
| 112 g_crashpad_client.Get().DumpAndCrash(info); | 113 g_crashpad_client.Get().DumpAndCrash(info); |
| 113 return EXCEPTION_CONTINUE_SEARCH; | 114 return EXCEPTION_CONTINUE_SEARCH; |
| 114 } | 115 } |
| 115 | 116 |
| 117 // NOTE: This function is used by SyzyASAN to annotate crash reports. If you | |
| 118 // change the name or signature of this function you will break SyzyASAN | |
| 119 // instrumented releases of Chrome. Please contact syzygy-team@chromium.org | |
| 120 // before doing so! See also http://crbug.com/567781. | |
| 121 void __declspec(dllexport) __cdecl SetCrashKeyValueImpl( | |
|
chrisha
2015/12/08 21:07:57
Won't this be doubly defined now because of breakp
scottmg
2015/12/08 22:16:44
Right, breakpad_win.cc isn't compiled into Chrome
| |
| 122 const wchar_t* key, const wchar_t* value) { | |
| 123 base::debug::SetCrashKeyValue(base::UTF16ToUTF8(key), | |
| 124 base::UTF16ToUTF8(value)); | |
| 125 } | |
| 126 | |
| 127 void __declspec(dllexport) __cdecl ClearCrashKeyValueImpl( | |
| 128 const wchar_t* key) { | |
| 129 base::debug::ClearCrashKey(base::UTF16ToUTF8(key)); | |
| 130 } | |
| 131 | |
| 116 // TODO(scottmg): http://crbug.com/546288 These exported functions are for | 132 // TODO(scottmg): http://crbug.com/546288 These exported functions are for |
| 117 // compatibility with how Breakpad worked, but it seems like there's no need to | 133 // compatibility with how Breakpad worked, but it seems like there's no need to |
| 118 // do the CreateRemoteThread() dance with a minor extension of the Crashpad API | 134 // do the CreateRemoteThread() dance with a minor extension of the Crashpad API |
| 119 // (to just pass the pid we want a dump for). We should add that and then modify | 135 // (to just pass the pid we want a dump for). We should add that and then modify |
| 120 // hang_crash_dump_win.cc to work in a more direct manner. | 136 // hang_crash_dump_win.cc to work in a more direct manner. |
| 121 | 137 |
| 122 // Used for dumping a process state when there is no crash. | 138 // Used for dumping a process state when there is no crash. |
| 123 extern "C" void __declspec(dllexport) __cdecl DumpProcessWithoutCrash() { | 139 extern "C" void __declspec(dllexport) __cdecl DumpProcessWithoutCrash() { |
| 124 CRASHPAD_SIMULATE_CRASH(); | 140 CRASHPAD_SIMULATE_CRASH(); |
| 125 } | 141 } |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 247 reinterpret_cast<ExceptionHandlerRecord*>(start); | 263 reinterpret_cast<ExceptionHandlerRecord*>(start); |
| 248 | 264 |
| 249 CHECK(RtlDeleteFunctionTable(&record->runtime_function)); | 265 CHECK(RtlDeleteFunctionTable(&record->runtime_function)); |
| 250 } | 266 } |
| 251 #endif // ARCH_CPU_X86_64 | 267 #endif // ARCH_CPU_X86_64 |
| 252 | 268 |
| 253 } // extern "C" | 269 } // extern "C" |
| 254 | 270 |
| 255 } // namespace internal | 271 } // namespace internal |
| 256 } // namespace crash_reporter | 272 } // namespace crash_reporter |
| OLD | NEW |