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

Side by Side Diff: components/crash/content/app/crashpad_win.cc

Issue 2478633002: Update Crashpad to b47bf6c250c6b825dee1c5fbad9152c2c962e828 (Closed)
Patch Set: mac comment 2 Created 4 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « components/crash/content/app/crashpad_mac.mm ('k') | third_party/crashpad/README.chromium » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <memory> 7 #include <memory>
8 8
9 #include "base/debug/crash_logging.h" 9 #include "base/debug/crash_logging.h"
10 #include "base/environment.h" 10 #include "base/environment.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 #elif defined(ARCH_CPU_X86_64) 51 #elif defined(ARCH_CPU_X86_64)
52 (*annotations)["plat"] = std::string("Win64"); 52 (*annotations)["plat"] = std::string("Win64");
53 #endif 53 #endif
54 } 54 }
55 55
56 base::FilePath PlatformCrashpadInitialization(bool initial_client, 56 base::FilePath PlatformCrashpadInitialization(bool initial_client,
57 bool browser_process, 57 bool browser_process,
58 bool embedded_handler) { 58 bool embedded_handler) {
59 base::FilePath database_path; // Only valid in the browser process. 59 base::FilePath database_path; // Only valid in the browser process.
60 base::FilePath metrics_path; // Only valid in the browser process. 60 base::FilePath metrics_path; // Only valid in the browser process.
61 bool result = false;
62 61
63 const char kPipeNameVar[] = "CHROME_CRASHPAD_PIPE_NAME"; 62 const char kPipeNameVar[] = "CHROME_CRASHPAD_PIPE_NAME";
64 const char kServerUrlVar[] = "CHROME_CRASHPAD_SERVER_URL"; 63 const char kServerUrlVar[] = "CHROME_CRASHPAD_SERVER_URL";
65 std::unique_ptr<base::Environment> env(base::Environment::Create()); 64 std::unique_ptr<base::Environment> env(base::Environment::Create());
66 if (initial_client) { 65 if (initial_client) {
67 CrashReporterClient* crash_reporter_client = GetCrashReporterClient(); 66 CrashReporterClient* crash_reporter_client = GetCrashReporterClient();
68 67
69 base::string16 database_path_str; 68 base::string16 database_path_str;
70 if (crash_reporter_client->GetCrashDumpLocation(&database_path_str)) 69 if (crash_reporter_client->GetCrashDumpLocation(&database_path_str))
71 database_path = base::FilePath(database_path_str); 70 database_path = base::FilePath(database_path_str);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 arguments.push_back(std::string("--type=") + switches::kCrashpadHandler); 111 arguments.push_back(std::string("--type=") + switches::kCrashpadHandler);
113 // The prefetch argument added here has to be documented in 112 // The prefetch argument added here has to be documented in
114 // chrome_switches.cc, below the kPrefetchArgument* constants. A constant 113 // chrome_switches.cc, below the kPrefetchArgument* constants. A constant
115 // can't be used here because crashpad can't depend on Chrome. 114 // can't be used here because crashpad can't depend on Chrome.
116 arguments.push_back("/prefetch:7"); 115 arguments.push_back("/prefetch:7");
117 } else { 116 } else {
118 base::FilePath exe_dir = exe_file.DirName(); 117 base::FilePath exe_dir = exe_file.DirName();
119 exe_file = exe_dir.Append(FILE_PATH_LITERAL("crashpad_handler.exe")); 118 exe_file = exe_dir.Append(FILE_PATH_LITERAL("crashpad_handler.exe"));
120 } 119 }
121 120
122 result = g_crashpad_client.Get().StartHandler( 121 g_crashpad_client.Get().StartHandler(
123 exe_file, database_path, metrics_path, url, process_annotations, 122 exe_file, database_path, metrics_path, url, process_annotations,
124 arguments, false); 123 arguments, false, false);
125 124
126 // If we're the browser, push the pipe name into the environment so child 125 // If we're the browser, push the pipe name into the environment so child
127 // processes can connect to it. If we inherited another crashpad_handler's 126 // processes can connect to it. If we inherited another crashpad_handler's
128 // pipe name, we'll overwrite it here. 127 // pipe name, we'll overwrite it here.
129 env->SetVar(kPipeNameVar, 128 env->SetVar(kPipeNameVar,
130 base::UTF16ToUTF8(g_crashpad_client.Get().GetHandlerIPCPipe())); 129 base::UTF16ToUTF8(g_crashpad_client.Get().GetHandlerIPCPipe()));
131 } else { 130 } else {
132 std::string pipe_name_utf8; 131 std::string pipe_name_utf8;
133 result = env->GetVar(kPipeNameVar, &pipe_name_utf8); 132 if (env->GetVar(kPipeNameVar, &pipe_name_utf8)) {
134 if (result) { 133 g_crashpad_client.Get().SetHandlerIPCPipe(
135 result = g_crashpad_client.Get().SetHandlerIPCPipe(
136 base::UTF8ToUTF16(pipe_name_utf8)); 134 base::UTF8ToUTF16(pipe_name_utf8));
137 } 135 }
138 } 136 }
139 137
140 if (result) {
141 result = g_crashpad_client.Get().UseHandler();
142 }
143 return database_path; 138 return database_path;
144 } 139 }
145 140
146 // TODO(scottmg): http://crbug.com/546288 These exported functions are for 141 // TODO(scottmg): http://crbug.com/546288 These exported functions are for
147 // compatibility with how Breakpad worked, but it seems like there's no need to 142 // compatibility with how Breakpad worked, but it seems like there's no need to
148 // do the CreateRemoteThread() dance with a minor extension of the Crashpad API 143 // do the CreateRemoteThread() dance with a minor extension of the Crashpad API
149 // (to just pass the pid we want a dump for). We should add that and then modify 144 // (to just pass the pid we want a dump for). We should add that and then modify
150 // hang_crash_dump_win.cc to work in a more direct manner. 145 // hang_crash_dump_win.cc to work in a more direct manner.
151 146
152 // Used for dumping a process state when there is no crash. 147 // Used for dumping a process state when there is no crash.
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 void __declspec(dllexport) __cdecl UnregisterNonABICompliantCodeRange( 304 void __declspec(dllexport) __cdecl UnregisterNonABICompliantCodeRange(
310 void* start) { 305 void* start) {
311 ExceptionHandlerRecord* record = 306 ExceptionHandlerRecord* record =
312 reinterpret_cast<ExceptionHandlerRecord*>(start); 307 reinterpret_cast<ExceptionHandlerRecord*>(start);
313 308
314 CHECK(RtlDeleteFunctionTable(&record->runtime_function)); 309 CHECK(RtlDeleteFunctionTable(&record->runtime_function));
315 } 310 }
316 #endif // ARCH_CPU_X86_64 311 #endif // ARCH_CPU_X86_64
317 312
318 } // extern "C" 313 } // extern "C"
OLDNEW
« no previous file with comments | « components/crash/content/app/crashpad_mac.mm ('k') | third_party/crashpad/README.chromium » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698