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

Side by Side Diff: chrome/app/breakpad_linux.cc

Issue 11969025: Enable breakpad building by default on Android. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nits Created 7 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/app/breakpad_linux.h ('k') | chrome/app/chrome_main_delegate.cc » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #define SYS_SYSCALL_ENTRYPOINT "playground$syscallEntryPoint" 7 #define SYS_SYSCALL_ENTRYPOINT "playground$syscallEntryPoint"
8 8
9 #include "chrome/app/breakpad_linux.h" 9 #include "chrome/app/breakpad_linux.h"
10 10
11 #include <fcntl.h> 11 #include <fcntl.h>
12 #include <poll.h> 12 #include <poll.h>
13 #include <signal.h> 13 #include <signal.h>
14 #include <stdlib.h> 14 #include <stdlib.h>
15 #include <sys/socket.h> 15 #include <sys/socket.h>
16 #include <sys/time.h> 16 #include <sys/time.h>
17 #include <sys/types.h> 17 #include <sys/types.h>
18 #include <sys/wait.h> 18 #include <sys/wait.h>
19 #include <sys/uio.h> 19 #include <sys/uio.h>
20 #include <time.h> 20 #include <time.h>
21 #include <unistd.h> 21 #include <unistd.h>
22 22
23 #include <algorithm> 23 #include <algorithm>
24 #include <string> 24 #include <string>
25 25
26 #include "base/command_line.h" 26 #include "base/command_line.h"
27 #include "base/file_path.h" 27 #include "base/file_path.h"
28 #include "base/linux_util.h" 28 #include "base/linux_util.h"
29 #include "base/path_service.h" 29 #include "base/path_service.h"
30 #include "base/platform_file.h"
30 #include "base/posix/eintr_wrapper.h" 31 #include "base/posix/eintr_wrapper.h"
31 #include "base/posix/global_descriptors.h" 32 #include "base/posix/global_descriptors.h"
32 #include "base/process_util.h" 33 #include "base/process_util.h"
33 #include "base/string_util.h" 34 #include "base/string_util.h"
34 #include "breakpad/src/client/linux/handler/exception_handler.h" 35 #include "breakpad/src/client/linux/handler/exception_handler.h"
35 #include "breakpad/src/client/linux/minidump_writer/directory_reader.h" 36 #include "breakpad/src/client/linux/minidump_writer/directory_reader.h"
36 #include "breakpad/src/common/linux/linux_libc_support.h" 37 #include "breakpad/src/common/linux/linux_libc_support.h"
37 #include "breakpad/src/common/memory.h" 38 #include "breakpad/src/common/memory.h"
38 #include "chrome/browser/crash_upload_list.h" 39 #include "chrome/browser/crash_upload_list.h"
39 #include "chrome/common/child_process_logging.h" 40 #include "chrome/common/child_process_logging.h"
40 #include "chrome/common/chrome_paths.h" 41 #include "chrome/common/chrome_paths.h"
41 #include "chrome/common/chrome_switches.h" 42 #include "chrome/common/chrome_switches.h"
42 #include "chrome/common/chrome_version_info_posix.h" 43 #include "chrome/common/chrome_version_info_posix.h"
43 #include "chrome/common/env_vars.h" 44 #include "chrome/common/env_vars.h"
44 #include "chrome/common/logging_chrome.h" 45 #include "chrome/common/logging_chrome.h"
45 #include "content/public/common/content_descriptors.h" 46 #include "content/public/common/content_descriptors.h"
46 47
47 #if defined(OS_ANDROID) 48 #if defined(OS_ANDROID)
48 #include <android/log.h> 49 #include <android/log.h>
49 #include <sys/stat.h> 50 #include <sys/stat.h>
50 51
51 #include "base/android/build_info.h" 52 #include "base/android/build_info.h"
52 #include "base/android/path_utils.h" 53 #include "base/android/path_utils.h"
54 #include "chrome/common/descriptors_android.h"
53 #include "third_party/lss/linux_syscall_support.h" 55 #include "third_party/lss/linux_syscall_support.h"
54 #else 56 #else
55 #include "sandbox/linux/seccomp-legacy/linux_syscall_support.h" 57 #include "sandbox/linux/seccomp-legacy/linux_syscall_support.h"
56 #endif 58 #endif
57 59
58 #if defined(ADDRESS_SANITIZER) 60 #if defined(ADDRESS_SANITIZER)
59 #include <ucontext.h> // for getcontext(). 61 #include <ucontext.h> // for getcontext().
60 #endif 62 #endif
61 63
62 #if defined(OS_ANDROID) 64 #if defined(OS_ANDROID)
(...skipping 1398 matching lines...) Expand 10 before | Expand all | Expand 10 after
1461 SetProcessStartTime(); 1463 SetProcessStartTime();
1462 1464
1463 logging::SetDumpWithoutCrashingFunction(&DumpProcess); 1465 logging::SetDumpWithoutCrashingFunction(&DumpProcess);
1464 #if defined(ADDRESS_SANITIZER) 1466 #if defined(ADDRESS_SANITIZER)
1465 // Register the callback for AddressSanitizer error reporting. 1467 // Register the callback for AddressSanitizer error reporting.
1466 __asan_set_error_report_callback(AsanLinuxBreakpadCallback); 1468 __asan_set_error_report_callback(AsanLinuxBreakpadCallback);
1467 #endif 1469 #endif
1468 } 1470 }
1469 1471
1470 #if defined(OS_ANDROID) 1472 #if defined(OS_ANDROID)
1471 void InitNonBrowserCrashReporterForAndroid(int minidump_fd) { 1473 void InitNonBrowserCrashReporterForAndroid() {
1472 const CommandLine* command_line = CommandLine::ForCurrentProcess(); 1474 const CommandLine* command_line = CommandLine::ForCurrentProcess();
1473 if (command_line->HasSwitch(switches::kEnableCrashReporter)) 1475 if (command_line->HasSwitch(switches::kEnableCrashReporter)) {
1474 EnableNonBrowserCrashDumping(minidump_fd); 1476 // On Android we need to provide a FD to the file where the minidump is
1477 // generated as the renderer and browser run with different UIDs
1478 // (preventing the browser from inspecting the renderer process).
1479 int minidump_fd = base::GlobalDescriptors::GetInstance()->
1480 MaybeGet(kAndroidMinidumpDescriptor);
1481 if (minidump_fd == base::kInvalidPlatformFileValue) {
1482 NOTREACHED() << "Could not find minidump FD, crash reporting disabled.";
1483 } else {
1484 EnableNonBrowserCrashDumping(minidump_fd);
1485 }
1486 }
1475 } 1487 }
1476 #endif // OS_ANDROID 1488 #endif // OS_ANDROID
1477 1489
1478 bool IsCrashReporterEnabled() { 1490 bool IsCrashReporterEnabled() {
1479 return g_is_crash_reporter_enabled; 1491 return g_is_crash_reporter_enabled;
1480 } 1492 }
OLDNEW
« no previous file with comments | « chrome/app/breakpad_linux.h ('k') | chrome/app/chrome_main_delegate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698