Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Unified Diff: components/crash/content/app/crashpad.cc

Issue 2256723002: Fix SyzyASAN build (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« chrome/BUILD.gn ('K') | « components/crash/content/app/crashpad.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/crash/content/app/crashpad.cc
diff --git a/components/crash/content/app/crashpad.cc b/components/crash/content/app/crashpad.cc
index 85afe46af675145d2b1251ea5a3b9e5989123eb2..2f916dc5037f20d0e8a55170a28614c7beae8786 100644
--- a/components/crash/content/app/crashpad.cc
+++ b/components/crash/content/app/crashpad.cc
@@ -7,10 +7,6 @@
#include <stddef.h>
#include <string.h>
-#if BUILDFLAG(ENABLE_KASKO)
-#include <psapi.h>
-#endif // BUILDFLAG(ENABLE_KASKO)
-
#include <algorithm>
#include <map>
#include <vector>
@@ -40,11 +36,6 @@
#include <unistd.h>
#endif // OS_POSIX
-#if BUILDFLAG(ENABLE_KASKO)
-#include "base/win/scoped_handle.h"
-#include "third_party/crashpad/crashpad/snapshot/api/module_annotations_win.h"
-#endif
-
namespace crash_reporter {
namespace {
@@ -103,74 +94,6 @@ void DumpWithoutCrashing() {
CRASHPAD_SIMULATE_CRASH();
}
-#if BUILDFLAG(ENABLE_KASKO)
-// TODO(ananta)
-// We cannot depend on functionality in base which pulls in dependencies on
-// user32 directly or indirectly. The GetLoadedModulesSnapshot is a copy of the
-// function in base/win/win_util.cc. Depending on the base function pulls in
-// dependencies on user32 due to other functionality in win_util.cc. This
-// function should be removed when KASKO is removed.
-bool GetLoadedModulesSnapshot(HANDLE process, std::vector<HMODULE>* snapshot) {
- DCHECK(snapshot);
- DCHECK_EQ(0u, snapshot->size());
- snapshot->resize(128);
-
- // We will retry at least once after first determining |bytes_required|. If
- // the list of modules changes after we receive |bytes_required| we may retry
- // more than once.
- int retries_remaining = 5;
- do {
- DWORD bytes_required = 0;
- // EnumProcessModules returns 'success' even if the buffer size is too
- // small.
- DCHECK_GE(std::numeric_limits<DWORD>::max(),
- snapshot->size() * sizeof(HMODULE));
- if (!::EnumProcessModules(
- process, &(*snapshot)[0],
- static_cast<DWORD>(snapshot->size() * sizeof(HMODULE)),
- &bytes_required)) {
- DPLOG(ERROR) << "::EnumProcessModules failed.";
- return false;
- }
- DCHECK_EQ(0u, bytes_required % sizeof(HMODULE));
- size_t num_modules = bytes_required / sizeof(HMODULE);
- if (num_modules <= snapshot->size()) {
- // Buffer size was too big, presumably because a module was unloaded.
- snapshot->erase(snapshot->begin() + num_modules, snapshot->end());
- return true;
- } else if (num_modules == 0) {
- DLOG(ERROR) << "Can't determine the module list size.";
- return false;
- } else {
- // Buffer size was too small. Try again with a larger buffer. A little
- // more room is given to avoid multiple expensive calls to
- // ::EnumProcessModules() just because one module has been added.
- snapshot->resize(num_modules + 8, NULL);
- }
- } while (--retries_remaining);
-
- DLOG(ERROR) << "Failed to enumerate modules.";
- return false;
-}
-
-HMODULE GetModuleInProcess(base::ProcessHandle process,
- const wchar_t* module_name) {
- std::vector<HMODULE> modules_snapshot;
- if (!GetLoadedModulesSnapshot(process, &modules_snapshot))
- return nullptr;
-
- for (HMODULE module : modules_snapshot) {
- wchar_t current_module_name[MAX_PATH];
- if (!::GetModuleBaseName(process, module, current_module_name, MAX_PATH))
- continue;
-
- if (std::wcscmp(module_name, current_module_name) == 0)
- return module;
- }
- return nullptr;
-}
-#endif // BUILDFLAG(ENABLE_KASKO)
-
void InitializeCrashpadImpl(bool initial_client,
const std::string& process_type,
bool embedded_handler) {
@@ -363,97 +286,6 @@ void GetReports(std::vector<Report>* reports) {
});
}
-#if BUILDFLAG(ENABLE_KASKO)
-
-void GetCrashKeysForKasko(std::vector<kasko::api::CrashKey>* crash_keys) {
- // Get the platform annotations.
- std::map<std::string, std::string> annotations;
- internal::GetPlatformCrashpadAnnotations(&annotations);
-
- // Reserve room for the GUID and the platform annotations.
- crash_keys->clear();
- crash_keys->reserve(
- g_simple_string_dictionary->GetCount() + 1 + annotations.size());
-
- // Set the Crashpad client ID in the crash keys.
- bool got_guid = false;
- if (g_database) {
- crashpad::Settings* settings = g_database->GetSettings();
- crashpad::UUID uuid;
- if (settings->GetClientID(&uuid)) {
- kasko::api::CrashKey kv;
- wcsncpy_s(kv.name, L"guid", _TRUNCATE);
- wcsncpy_s(kv.value, base::UTF8ToWide(uuid.ToString()).c_str(), _TRUNCATE);
- crash_keys->push_back(kv);
- got_guid = true;
- }
- }
-
- crashpad::SimpleStringDictionary::Iterator iter(*g_simple_string_dictionary);
- for (;;) {
- const auto* entry = iter.Next();
- if (!entry)
- break;
-
- // Skip the 'guid' key if it was already set.
- static const char kGuid[] = "guid";
- if (got_guid && ::strncmp(entry->key, kGuid, arraysize(kGuid)) == 0)
- continue;
-
- // Skip any platform annotations as they'll be set below.
- if (annotations.count(entry->key))
- continue;
-
- kasko::api::CrashKey kv;
- wcsncpy_s(kv.name, base::UTF8ToWide(entry->key).c_str(), _TRUNCATE);
- wcsncpy_s(kv.value, base::UTF8ToWide(entry->value).c_str(), _TRUNCATE);
- crash_keys->push_back(kv);
- }
-
- // Merge in the platform annotations.
- for (const auto& entry : annotations) {
- kasko::api::CrashKey kv;
- wcsncpy_s(kv.name, base::UTF8ToWide(entry.first).c_str(), _TRUNCATE);
- wcsncpy_s(kv.value, base::UTF8ToWide(entry.second).c_str(), _TRUNCATE);
- crash_keys->push_back(kv);
- }
-}
-
-void ReadMainModuleAnnotationsForKasko(
- const base::Process& process,
- std::vector<kasko::api::CrashKey>* crash_keys) {
- // Reopen process with necessary access.
- base::win::ScopedHandle process_handle(::OpenProcess(
- PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, process.Pid()));
- if (!process_handle.IsValid())
- return;
-
- // The executable name is the same for the browser process and the crash
- // reporter.
- wchar_t exe_file[MAX_PATH] = {};
- CHECK(::GetModuleFileName(nullptr, exe_file, arraysize(exe_file)));
-
- base::FilePath exe_path(exe_file);
-
- HMODULE module = GetModuleInProcess(process_handle.Get(),
- exe_path.BaseName().value().c_str());
- if (!module)
- return;
-
- std::map<std::string, std::string> annotations;
- crashpad::ReadModuleAnnotations(process_handle.Get(), module, &annotations);
-
- // Append the annotations to the crash keys.
- for (const auto& entry : annotations) {
- kasko::api::CrashKey kv;
- wcsncpy_s(kv.name, base::UTF8ToWide(entry.first).c_str(), _TRUNCATE);
- wcsncpy_s(kv.value, base::UTF8ToWide(entry.second).c_str(), _TRUNCATE);
- crash_keys->push_back(kv);
- }
-}
-
-#endif // BUILDFLAG(ENABLE_KASKO)
-
} // namespace crash_reporter
#if defined(OS_WIN)
« chrome/BUILD.gn ('K') | « components/crash/content/app/crashpad.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698