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

Unified Diff: chrome/app/breakpad_linuxish.cc

Issue 10205008: Linux: Clean up Breakpad code after r131662. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 8 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/app/breakpad_linuxish.cc
===================================================================
--- chrome/app/breakpad_linuxish.cc (revision 133521)
+++ chrome/app/breakpad_linuxish.cc (working copy)
@@ -46,13 +46,22 @@
#if defined(OS_ANDROID)
#include <android/log.h>
#include <sys/stat.h>
+
+#include "base/android/build_info.h"
#include "base/android/path_utils.h"
-#include "base/android/build_info.h"
#include "third_party/lss/linux_syscall_support.h"
#else
#include "seccompsandbox/linux_syscall_support.h"
#endif
+#if defined(OS_ANDROID)
+#define STAT_STRUCT struct stat
+#define FSTAT_FUNC fstat
+#else
+#define STAT_STRUCT struct kernel_stat
+#define FSTAT_FUNC sys_fstat
+#endif
+
#ifndef PR_SET_PTRACER
#define PR_SET_PTRACER 0x59616d61
#endif
@@ -144,8 +153,8 @@
return dst;
}
-static char* my_strncat(char *dest, const char *src, size_t len) {
- char *ret = dest;
+static char* my_strncat(char *dest, const char* src, size_t len) {
+ char* ret = dest;
while (*dest)
dest++;
while (len--)
@@ -159,13 +168,12 @@
namespace {
// MIME substrings.
-static const char g_rn[] = "\r\n";
-static const char g_form_data_msg[] = "Content-Disposition: form-data; name=\"";
-static const char g_quote_msg[] = "\"";
-static const char g_dashdash_msg[] = "--";
-static const char g_dump_msg[] = "upload_file_minidump\"; filename=\"dump\"";
-static const char g_content_type_msg[] =
- "Content-Type: application/octet-stream";
+const char g_rn[] = "\r\n";
+const char g_form_data_msg[] = "Content-Disposition: form-data; name=\"";
+const char g_quote_msg[] = "\"";
+const char g_dashdash_msg[] = "--";
+const char g_dump_msg[] = "upload_file_minidump\"; filename=\"dump\"";
+const char g_content_type_msg[] = "Content-Type: application/octet-stream";
// MimeWriter manages an iovec for writing MIMEs to a file.
class MimeWriter {
@@ -343,9 +351,11 @@
g_breakpad->WriteMinidump();
}
+const char kGoogleBreakpad[] = "google-breakpad";
+
size_t WriteLog(const char* buf, size_t nbytes) {
#if defined(OS_ANDROID)
- return __android_log_write(ANDROID_LOG_WARN, "google-breakpad", buf);
+ return __android_log_write(ANDROID_LOG_WARN, kGoogleBreakpad, buf);
#else
return sys_write(2, buf, nbytes);
#endif
@@ -363,13 +373,8 @@
WriteLog(msg, sizeof(msg));
return;
}
-#if defined(OS_ANDROID)
- struct stat st;
- if (fstat(dumpfd, &st) != 0) {
-#else
- struct kernel_stat st;
- if (sys_fstat(dumpfd, &st) != 0) {
-#endif
+ STAT_STRUCT st;
+ if (FSTAT_FUNC(dumpfd, &st) != 0) {
static const char msg[] = "Cannot upload crash dump: stat failed\n";
WriteLog(msg, sizeof(msg));
IGNORE_RET(sys_close(dumpfd));
@@ -540,11 +545,6 @@
base::android::BuildInfo::GetInstance();
static const char* version_msg =
android_build_info->package_version_code();
- static const char android_build_id[] = "android_build_id";
- static const char android_build_fp[] = "android_build_fp";
- static const char device[] = "device";
- static const char model[] = "model";
- static const char brand[] = "brand";
#else
static const char version_msg[] = PRODUCT_VERSION;
#endif
@@ -557,14 +557,20 @@
writer.AddPairString("guid", info.guid);
writer.AddBoundary();
if (info.pid > 0) {
+ char pid_buf[kUint64StringSize];
uint64_t pid_str_len = my_uint64_len(info.pid);
- char* pid_buf = reinterpret_cast<char*>(allocator.Alloc(pid_str_len));
my_uint64tos(pid_buf, info.pid, pid_str_len);
writer.AddPairString("pid", pid_buf);
writer.AddBoundary();
}
#if defined(OS_ANDROID)
// Addtional MIME blocks are added for logging on Android devices.
+ static const char android_build_id[] = "android_build_id";
+ static const char android_build_fp[] = "android_build_fp";
+ static const char device[] = "device";
+ static const char model[] = "model";
+ static const char brand[] = "brand";
+
writer.AddPairString(
android_build_id, android_build_info->android_build_id());
writer.AddBoundary();
@@ -725,17 +731,19 @@
writer.Flush();
IGNORE_RET(sys_close(temp_file_fd));
+
#if defined(OS_ANDROID)
+ __android_log_write(ANDROID_LOG_WARN,
+ kGoogleBreakpad,
+ "Output crash dump file:");
+ __android_log_write(ANDROID_LOG_WARN, kGoogleBreakpad, info.filename);
+
+ char pid_buf[kUint64StringSize];
uint64_t pid_str_len = my_uint64_len(info.pid);
- char* pid_buf = reinterpret_cast<char*>(allocator.Alloc(pid_str_len));
my_uint64tos(pid_buf, info.pid, pid_str_len);
- static const char* output_msg = "Output crash dump file:";
- WriteLog(output_msg, my_strlen(output_msg));
- unsigned filename_len = my_strlen(info.filename);
- WriteLog(info.filename, filename_len);
// -1 because we won't need the null terminator on the original filename.
- size_t done_filename_len = filename_len - 1 + pid_str_len;
+ size_t done_filename_len = my_strlen(info.filename) + pid_str_len - 1;
char* done_filename = reinterpret_cast<char*>(
allocator.Alloc(done_filename_len));
// Rename the file such that the pid is the suffix in order to signal other
@@ -749,10 +757,10 @@
my_strncat(done_filename, pid_buf, pid_str_len);
// Rename the minidump file to signal that it is complete.
if (rename(info.filename, done_filename)) {
- __android_log_write(ANDROID_LOG_WARN, "chromium", "Failed to rename:");
- __android_log_write(ANDROID_LOG_WARN, "chromium", info.filename);
- __android_log_write(ANDROID_LOG_WARN, "chromium", "to");
- __android_log_write(ANDROID_LOG_WARN, "chromium", done_filename);
+ __android_log_write(ANDROID_LOG_WARN, kGoogleBreakpad, "Failed to rename:");
+ __android_log_write(ANDROID_LOG_WARN, kGoogleBreakpad, info.filename);
+ __android_log_write(ANDROID_LOG_WARN, kGoogleBreakpad, "to");
+ __android_log_write(ANDROID_LOG_WARN, kGoogleBreakpad, done_filename);
}
#endif
@@ -820,7 +828,7 @@
// Wget process.
IGNORE_RET(sys_close(fds[0]));
IGNORE_RET(sys_dup2(fds[1], 3));
- static const char* const kWgetBinary = "/usr/bin/wget";
+ static const char kWgetBinary[] = "/usr/bin/wget";
const char* args[] = {
kWgetBinary,
header,
@@ -950,23 +958,23 @@
// Wrapper function, do not add more code here.
static bool CrashDoneNoUpload(const char* dump_path,
- const char* minidump_id,
- void* context,
- bool succeeded) {
+ const char* minidump_id,
+ void* context,
+ bool succeeded) {
return CrashDone(dump_path, minidump_id, false, succeeded);
}
#if !defined(OS_ANDROID)
// Wrapper function, do not add more code here.
static bool CrashDoneUpload(const char* dump_path,
- const char* minidump_id,
- void* context,
- bool succeeded) {
+ const char* minidump_id,
+ void* context,
+ bool succeeded) {
return CrashDone(dump_path, minidump_id, true, succeeded);
}
#endif
-void EnableCrashDumping(bool unattended) {
+static void EnableCrashDumping(bool unattended) {
g_is_crash_reporter_enabled = true;
FilePath tmp_path("/tmp");
@@ -983,7 +991,7 @@
}
DCHECK(!g_breakpad);
#if defined(OS_ANDROID)
- unattended = true;
+ unattended = true; // Android never uploads directly.
#endif
if (unattended) {
g_breakpad = new google_breakpad::ExceptionHandler(
@@ -992,14 +1000,18 @@
CrashDoneNoUpload,
NULL,
true /* install handlers */);
- } else {
- g_breakpad = new google_breakpad::ExceptionHandler(
- tmp_path.value().c_str(),
- NULL,
- CrashDoneUpload,
- NULL,
- true /* install handlers */);
+ return;
}
+
+#if !defined(OS_ANDROID)
+ // Attended mode
+ g_breakpad = new google_breakpad::ExceptionHandler(
+ tmp_path.value().c_str(),
+ NULL,
+ CrashDoneUpload,
+ NULL,
+ true /* install handlers */);
+#endif
}
// Non-Browser = Extension, Gpu, Plugins, Ppapi and Renderer
@@ -1101,7 +1113,7 @@
return true;
}
-void EnableNonBrowserCrashDumping() {
+static void EnableNonBrowserCrashDumping() {
const int fd = base::GlobalDescriptors::GetInstance()->Get(kCrashDumpSignal);
g_is_crash_reporter_enabled = true;
// We deliberately leak this object.
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698