| Index: chrome/browser/renderer_host/render_crash_handler_host_linux.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_host/render_crash_handler_host_linux.cc (revision 20935)
|
| +++ chrome/browser/renderer_host/render_crash_handler_host_linux.cc (working copy)
|
| @@ -12,6 +12,7 @@
|
| #include <sys/uio.h>
|
| #include <unistd.h>
|
|
|
| +#include <string>
|
| #include <vector>
|
|
|
| #include "base/eintr_wrapper.h"
|
| @@ -202,13 +203,14 @@
|
| sizeof(google_breakpad::ExceptionHandler::CrashContext);
|
|
|
| struct msghdr msg = {0};
|
| - struct iovec iov[3];
|
| + struct iovec iov[4];
|
| char crash_context[kCrashContextSize];
|
| char guid[kGuidSize + 1];
|
| char crash_url[kMaxActiveURLSize + 1];
|
| + char distro[kDistroSize + 1];
|
| char control[kControlMsgSize];
|
| const ssize_t expected_msg_size = sizeof(crash_context) + sizeof(guid) +
|
| - sizeof(crash_url);
|
| + sizeof(crash_url) + sizeof(distro);
|
|
|
| iov[0].iov_base = crash_context;
|
| iov[0].iov_len = sizeof(crash_context);
|
| @@ -216,8 +218,10 @@
|
| iov[1].iov_len = sizeof(guid);
|
| iov[2].iov_base = crash_url;
|
| iov[2].iov_len = sizeof(crash_url);
|
| + iov[3].iov_base = distro;
|
| + iov[3].iov_len = sizeof(distro);
|
| msg.msg_iov = iov;
|
| - msg.msg_iovlen = 3;
|
| + msg.msg_iovlen = 4;
|
| msg.msg_control = control;
|
| msg.msg_controllen = kControlMsgSize;
|
|
|
| @@ -251,7 +255,7 @@
|
| if (hdr->cmsg_type == SCM_RIGHTS) {
|
| const unsigned len = hdr->cmsg_len -
|
| (((uint8_t*)CMSG_DATA(hdr)) - (uint8_t*)hdr);
|
| - DCHECK(len % sizeof(int) == 0);
|
| + DCHECK_EQ(len % sizeof(int), 0u);
|
| const unsigned num_fds = len / sizeof(int);
|
| if (num_fds > 1 || num_fds == 0) {
|
| // A nasty renderer could try and send us too many descriptors and
|
| @@ -320,10 +324,17 @@
|
| HANDLE_EINTR(sendmsg(signal_fd, &msg, MSG_DONTWAIT | MSG_NOSIGNAL));
|
| HANDLE_EINTR(close(signal_fd));
|
|
|
| - UploadCrashDump(minidump_filename.c_str(),
|
| - "renderer", 8,
|
| - crash_url, strlen(crash_url),
|
| - guid, strlen(guid));
|
| + BreakpadInfo info;
|
| + info.filename = minidump_filename.c_str();
|
| + info.process_type = "renderer";
|
| + info.process_type_length = 8;
|
| + info.crash_url = crash_url;
|
| + info.crash_url_length = strlen(crash_url);
|
| + info.guid = guid;
|
| + info.guid_length = strlen(guid);
|
| + info.distro = distro;
|
| + info.distro_length = strlen(distro);
|
| + UploadCrashDump(info);
|
| }
|
|
|
| void RenderCrashHandlerHostLinux::WillDestroyCurrentMessageLoop() {
|
|
|