OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 // For linux_syscall_support.h. This makes it safe to call embedded system | 5 // For linux_syscall_support.h. This makes it safe to call embedded system |
6 // calls when in seccomp mode. | 6 // calls when in seccomp mode. |
7 | 7 |
8 #include "components/crash/app/breakpad_linux.h" | 8 #include "components/crash/app/breakpad_linux.h" |
9 | 9 |
10 #include <fcntl.h> | 10 #include <fcntl.h> |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
82 const char kUploadURL[] = "https://clients2.google.com/cr/report"; | 82 const char kUploadURL[] = "https://clients2.google.com/cr/report"; |
83 #endif | 83 #endif |
84 | 84 |
85 bool g_is_crash_reporter_enabled = false; | 85 bool g_is_crash_reporter_enabled = false; |
86 uint64_t g_process_start_time = 0; | 86 uint64_t g_process_start_time = 0; |
87 pid_t g_pid = 0; | 87 pid_t g_pid = 0; |
88 char* g_crash_log_path = NULL; | 88 char* g_crash_log_path = NULL; |
89 ExceptionHandler* g_breakpad = NULL; | 89 ExceptionHandler* g_breakpad = NULL; |
90 ExceptionHandler* g_microdump = NULL; | 90 ExceptionHandler* g_microdump = NULL; |
91 | 91 |
92 std::string g_microdump_build_fingerprint; | |
Lei Zhang
2015/05/14 19:14:26
Mark these Android only?
Lei Zhang
2015/05/14 19:14:27
Won't this and |g_microdump_product_info| add stat
Primiano Tucci (use gerrit)
2015/05/15 10:20:28
Facepalm, right. switched to lazy_instance with no
Primiano Tucci (use gerrit)
2015/05/15 10:20:28
Done.
| |
93 const char* g_c_microdump_build_fingerprint = NULL; | |
Lei Zhang
2015/05/14 19:14:27
Let's start using nullptr in new code.
Primiano Tucci (use gerrit)
2015/05/15 10:20:27
If you are fine with that, I did mass s/NULL/nullp
| |
94 | |
95 std::string g_microdump_product_info; | |
96 const char* g_c_microdump_product_info = NULL; | |
97 | |
92 #if defined(ADDRESS_SANITIZER) | 98 #if defined(ADDRESS_SANITIZER) |
93 const char* g_asan_report_str = NULL; | 99 const char* g_asan_report_str = NULL; |
94 #endif | 100 #endif |
95 #if defined(OS_ANDROID) | 101 #if defined(OS_ANDROID) |
96 char* g_process_type = NULL; | 102 char* g_process_type = NULL; |
97 #endif | 103 #endif |
98 | 104 |
99 CrashKeyStorage* g_crash_keys = NULL; | 105 CrashKeyStorage* g_crash_keys = NULL; |
100 | 106 |
101 // Writes the value |v| as 16 hex characters to the memory pointed at by | 107 // Writes the value |v| as 16 hex characters to the memory pointed at by |
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
722 // TODO(primiano): For the moment microdumps are enabled only on arm (32/64). | 728 // TODO(primiano): For the moment microdumps are enabled only on arm (32/64). |
723 // Extend support to other architectures (requires some breakpad changes). | 729 // Extend support to other architectures (requires some breakpad changes). |
724 return; | 730 return; |
725 #endif | 731 #endif |
726 | 732 |
727 if (!GetCrashReporterClient()->ShouldEnableBreakpadMicrodumps()) | 733 if (!GetCrashReporterClient()->ShouldEnableBreakpadMicrodumps()) |
728 return; | 734 return; |
729 | 735 |
730 VLOG(1) << "Enabling microdumps crash handler (process_type:" | 736 VLOG(1) << "Enabling microdumps crash handler (process_type:" |
731 << process_type << ")"; | 737 << process_type << ")"; |
738 | |
739 const char* product_name = NULL; | |
740 const char* product_version = NULL; | |
741 GetCrashReporterClient()->GetProductNameAndVersion(&product_name, | |
742 &product_version); | |
743 g_microdump_product_info = product_name + string(":") + product_version; | |
744 g_microdump_build_fingerprint = | |
745 base::android::BuildInfo::GetInstance()->android_build_fp(); | |
746 | |
747 // The exception handler runs in a compromised context and cannot use c_str() | |
748 // as that would require the heap. Therefore, we have to guarantee that the | |
749 // build fingerprint and product info pointers are always valid. | |
750 g_c_microdump_product_info = g_microdump_product_info.c_str(); | |
751 g_c_microdump_build_fingerprint = g_microdump_build_fingerprint.c_str(); | |
752 | |
753 MinidumpDescriptor descriptor(MinidumpDescriptor::kMicrodumpOnConsole); | |
754 descriptor.SetMicrodumpProductInfo(g_c_microdump_product_info); | |
755 descriptor.SetMicrodumpBuildFingerprint(g_c_microdump_build_fingerprint); | |
756 | |
732 DCHECK(!g_microdump); | 757 DCHECK(!g_microdump); |
733 bool is_browser_process = process_type.empty() || process_type == "webview"; | 758 bool is_browser_process = process_type.empty() || process_type == "webview"; |
734 g_microdump = new ExceptionHandler( | 759 g_microdump = new ExceptionHandler( |
735 MinidumpDescriptor(MinidumpDescriptor::kMicrodumpOnConsole), | 760 descriptor, |
736 NULL, | 761 NULL, |
737 MicrodumpCrashDone, | 762 MicrodumpCrashDone, |
738 reinterpret_cast<void*>(is_browser_process), | 763 reinterpret_cast<void*>(is_browser_process), |
739 true, // Install handlers. | 764 true, // Install handlers. |
740 -1); // Server file descriptor. -1 for in-process. | 765 -1); // Server file descriptor. -1 for in-process. |
741 return; | 766 return; |
742 } | 767 } |
743 | 768 |
744 bool CrashDoneInProcessNoUpload( | 769 bool CrashDoneInProcessNoUpload( |
745 const google_breakpad::MinidumpDescriptor& descriptor, | 770 const google_breakpad::MinidumpDescriptor& descriptor, |
(...skipping 962 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1708 } | 1733 } |
1709 } | 1734 } |
1710 } | 1735 } |
1711 #endif // OS_ANDROID | 1736 #endif // OS_ANDROID |
1712 | 1737 |
1713 bool IsCrashReporterEnabled() { | 1738 bool IsCrashReporterEnabled() { |
1714 return g_is_crash_reporter_enabled; | 1739 return g_is_crash_reporter_enabled; |
1715 } | 1740 } |
1716 | 1741 |
1717 } // namespace breakpad | 1742 } // namespace breakpad |
OLD | NEW |