OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 <fcntl.h> | 5 #include <fcntl.h> |
6 #include <sys/socket.h> | 6 #include <sys/socket.h> |
7 #include <sys/uio.h> | 7 #include <sys/uio.h> |
8 #include <unistd.h> | 8 #include <unistd.h> |
9 | 9 |
10 #include <string> | 10 #include <string> |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
325 sys_setsid(); | 325 sys_setsid(); |
326 | 326 |
327 // Leave one end of a pipe in the wget process and watch for it getting | 327 // Leave one end of a pipe in the wget process and watch for it getting |
328 // closed by the wget process exiting. | 328 // closed by the wget process exiting. |
329 int fds[2]; | 329 int fds[2]; |
330 sys_pipe(fds); | 330 sys_pipe(fds); |
331 | 331 |
332 const pid_t child = sys_fork(); | 332 const pid_t child = sys_fork(); |
333 if (child) { | 333 if (child) { |
334 sys_close(fds[1]); | 334 sys_close(fds[1]); |
335 char buf[17]; | 335 char id_buf[17]; |
336 HANDLE_EINTR(read(fds[0], buf, sizeof(buf) - 1)); | 336 const int len = HANDLE_EINTR(read(fds[0], id_buf, sizeof(id_buf) - 1)); |
337 buf[sizeof(buf) - 1] = 0; | 337 if (len > 0) { |
338 static const char msg[] = "\nCrash dump id: "; | 338 id_buf[len] = 0; |
339 sys_write(2, msg, sizeof(msg) - 1); | 339 static const char msg[] = "\nCrash dump id: "; |
340 sys_write(2, buf, my_strlen(buf)); | 340 sys_write(2, msg, sizeof(msg) - 1); |
341 sys_write(2, "\n", 1); | 341 sys_write(2, id_buf, my_strlen(buf)); |
| 342 sys_write(2, "\n", 1); |
| 343 } |
342 sys_unlink(filename); | 344 sys_unlink(filename); |
343 sys_unlink(buf); | 345 sys_unlink(buf); |
344 sys__exit(0); | 346 sys__exit(0); |
345 } | 347 } |
346 | 348 |
347 sys_close(fds[0]); | 349 sys_close(fds[0]); |
348 sys_dup2(fds[1], 3); | 350 sys_dup2(fds[1], 3); |
349 static const char* const kWgetBinary = "/usr/bin/wget"; | 351 static const char* const kWgetBinary = "/usr/bin/wget"; |
350 const char* args[] = { | 352 const char* args[] = { |
351 kWgetBinary, | 353 kWgetBinary, |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 | 479 |
478 // Determine the process type and take appropriate action. | 480 // Determine the process type and take appropriate action. |
479 const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess(); | 481 const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess(); |
480 const std::wstring process_type = | 482 const std::wstring process_type = |
481 parsed_command_line.GetSwitchValue(switches::kProcessType); | 483 parsed_command_line.GetSwitchValue(switches::kProcessType); |
482 if (process_type.empty()) | 484 if (process_type.empty()) |
483 EnableCrashDumping(); | 485 EnableCrashDumping(); |
484 else if (process_type == switches::kRendererProcess) | 486 else if (process_type == switches::kRendererProcess) |
485 EnableRendererCrashDumping(); | 487 EnableRendererCrashDumping(); |
486 } | 488 } |
OLD | NEW |