OLD | NEW |
1 // Copyright 2016 Google Inc. All Rights Reserved. | 1 // Copyright 2016 Google Inc. All Rights Reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 return false; | 63 return false; |
64 if (!g_crashpad_client.UseHandler()) | 64 if (!g_crashpad_client.UseHandler()) |
65 return false; | 65 return false; |
66 | 66 |
67 crashpad_present = true; | 67 crashpad_present = true; |
68 return true; | 68 return true; |
69 } | 69 } |
70 | 70 |
71 } // namespace | 71 } // namespace |
72 | 72 |
| 73 const char CrashpadReporter::kName[] = "CrashpadReporter"; |
| 74 |
73 // static | 75 // static |
74 std::unique_ptr<CrashpadReporter> CrashpadReporter::Create() { | 76 std::unique_ptr<CrashpadReporter> CrashpadReporter::Create() { |
75 // Create a crashpad reporter only if a crashpad instance is running for this | 77 // Create a crashpad reporter only if a crashpad instance is running for this |
76 // process. | 78 // process. |
77 if (!EnsureCrashpadConnected()) | 79 if (!EnsureCrashpadConnected()) |
78 return nullptr; | 80 return nullptr; |
79 | 81 |
80 auto crashpad_info = crashpad::CrashpadInfo::GetCrashpadInfo(); | 82 auto crashpad_info = crashpad::CrashpadInfo::GetCrashpadInfo(); |
81 return std::unique_ptr<CrashpadReporter>(new CrashpadReporter(crashpad_info)); | 83 return std::unique_ptr<CrashpadReporter>(new CrashpadReporter(crashpad_info)); |
82 } | 84 } |
83 | 85 |
84 const char* CrashpadReporter::GetName() const { | 86 const char* CrashpadReporter::GetName() const { |
85 return "CrashpadReporter"; | 87 return kName; |
86 } | 88 } |
87 | 89 |
88 uint32_t CrashpadReporter::GetFeatures() const { | 90 uint32_t CrashpadReporter::GetFeatures() const { |
89 return FEATURE_CRASH_KEYS | FEATURE_EARLY_CRASH_KEYS | | 91 return FEATURE_CRASH_KEYS | FEATURE_EARLY_CRASH_KEYS | |
90 FEATURE_MEMORY_RANGES | FEATURE_CUSTOM_STREAMS | | 92 FEATURE_MEMORY_RANGES | FEATURE_CUSTOM_STREAMS | |
91 FEATURE_DUMP_WITHOUT_CRASH; | 93 FEATURE_DUMP_WITHOUT_CRASH; |
92 } | 94 } |
93 | 95 |
94 bool CrashpadReporter::SetCrashKey(base::StringPiece key, | 96 bool CrashpadReporter::SetCrashKey(base::StringPiece key, |
95 base::StringPiece value) { | 97 base::StringPiece value) { |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 | 162 |
161 bool CrashpadReporter::DumpWithoutCrash(const CONTEXT& context) { | 163 bool CrashpadReporter::DumpWithoutCrash(const CONTEXT& context) { |
162 g_crashpad_client.DumpWithoutCrash(context); | 164 g_crashpad_client.DumpWithoutCrash(context); |
163 return true; | 165 return true; |
164 } | 166 } |
165 | 167 |
166 CrashpadReporter::CrashpadReporter(crashpad::CrashpadInfo* crashpad_info) | 168 CrashpadReporter::CrashpadReporter(crashpad::CrashpadInfo* crashpad_info) |
167 : crashpad_info_(crashpad_info) { | 169 : crashpad_info_(crashpad_info) { |
168 crash_keys_.reset(new crashpad::SimpleStringDictionary()); | 170 crash_keys_.reset(new crashpad::SimpleStringDictionary()); |
169 | 171 |
170 // Initialize the crashpad info struct. | 172 // Initialize the crashpad info struct. Limit indirectly referenced memory to |
| 173 // a maximum of 1MB, so that crash reports come in at around 1.5-1.7MB. This |
| 174 // is similar to the size of SyzyAsan crash reports generated by MS tools. |
171 crashpad_info->set_crashpad_handler_behavior( | 175 crashpad_info->set_crashpad_handler_behavior( |
172 crashpad::TriState::kEnabled); | 176 crashpad::TriState::kEnabled); |
173 crashpad_info->set_system_crash_reporter_forwarding( | 177 crashpad_info->set_system_crash_reporter_forwarding( |
174 crashpad::TriState::kDisabled); | 178 crashpad::TriState::kDisabled); |
175 crashpad_info->set_gather_indirectly_referenced_memory( | 179 crashpad_info->set_gather_indirectly_referenced_memory( |
176 crashpad::TriState::kEnabled); | 180 crashpad::TriState::kEnabled, 1 * 1024 * 1024); |
177 crashpad_info->set_simple_annotations(crash_keys_.get()); | 181 crashpad_info->set_simple_annotations(crash_keys_.get()); |
178 } | 182 } |
179 | 183 |
180 } // namespace reporters | 184 } // namespace reporters |
181 } // namespace asan | 185 } // namespace asan |
182 } // namespace agent | 186 } // namespace agent |
OLD | NEW |