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

Issue 3152010: Miscellaneous improvements to minidump-2-core:... (Closed)

Created:
10 years, 4 months ago by Markus (顧孟勤)
Modified:
9 years, 7 months ago
Reviewers:
Lei Zhang, agl
CC:
chromium-reviews, Aaron Boodman, Erik does not do reviews, pam+watch_chromium.org, Evan Martin
Visibility:
Public.

Description

Miscellaneous improvements to minidump-2-core: - now builds from gyp. - added a "-v" flag to print (almost) all of the information contained in the minidump file to stderr. - keep track of all mappings including the data that is part of this mapping (if any). This allows us to read the entire minidump file initially, combine all the different sources of information that we have, and come up with a complete picture of what needs to go into the core file. Previously, we had a hard time combining partial data from different minidump streams. - parse all information about memory mappings (including the /proc/$PID/maps data) that we get from the minidump. This gives us the most complete core file possible. - if breakpad recorded the loaded DSOs, update the _DYNAMIC data structure in the core file to include this information. The exact details for this data structure are described in <link.h>. - keep track of signatures for all DSOs. When we then generate the core file, include the signature in the filename of the DSO. This allows us to analyze user-provided crash dumps, even if the user has system libraries that differ from ours. We now assume that all of these DSOs are installed in "/var/lib/breakpad/" - added parsing of CPU register information for x86-64. Previously, we could only parse minidumps generated on i386. - detect incorrectly written minidump files (e.g. zero'd out environment and corrupted command lines) and don't bother parsing defective streams. - detect if the minidump file used the wrong stream identifier for the AUXV vector and compensate for this bug. TEST=convert minidump files, load in gdb, check that we get full backtraces BUG=none

Patch Set 1 #

Total comments: 6

Patch Set 2 : '' #

Unified diffs Side-by-side diffs Delta from patch set Stats (+742 lines, -65 lines) Patch
M breakpad/breakpad.gyp View 1 chunk +13 lines, -0 lines 0 comments Download
A breakpad/src/client/linux/minidump_writer/minidump_extension_linux.h View 1 chunk +74 lines, -0 lines 0 comments Download
M breakpad/src/tools/linux/md2core/minidump-2-core.cc View 1 19 chunks +655 lines, -65 lines 0 comments Download

Messages

Total messages: 3 (0 generated)
Markus (顧孟勤)
I made some minidump-2-core changes that give us much more complete core files from our ...
10 years, 4 months ago (2010-08-12 04:03:24 UTC) #1
Lei Zhang
breakpad/src is actually http://google-breakpad.googlecode.com/svn/trunk. You need to upload a CL to breakpad.appspot.com and get it ...
10 years, 4 months ago (2010-08-12 20:39:00 UTC) #2
agl
10 years, 4 months ago (2010-08-12 21:03:56 UTC) #3
LGTM

http://codereview.chromium.org/3152010/diff/1/4
File breakpad/src/tools/linux/md2core/minidump-2-core.cc (right):

http://codereview.chromium.org/3152010/diff/1/4#newcode135
breakpad/src/tools/linux/md2core/minidump-2-core.cc:135: // Get a zero-terminate
string. This method only works correctly for ASCII
typo: terminated

http://codereview.chromium.org/3152010/diff/1/4#newcode519
breakpad/src/tools/linux/md2core/minidump-2-core.cc:519: for (const u_int8_t*
ptr = range.data();
You gotta love C code with: uint8 (Chromium), uint8_t (C99) and u_int8_t here,
all trying to say 'byte' :)

http://codereview.chromium.org/3152010/diff/1/4#newcode801
breakpad/src/tools/linux/md2core/minidump-2-core.cc:801: std::string basename =
slash == std::string::npos
I think the ? should end up on the end of the previous line, but don't really
care.

http://codereview.chromium.org/3152010/diff/1/4#newcode824
breakpad/src/tools/linux/md2core/minidump-2-core.cc:824: for (std::map<uint64_t,
CrashedProcess::Mapping>::iterator iter =
Formatting needs some fixing here.

http://codereview.chromium.org/3152010/diff/1/4#newcode837
breakpad/src/tools/linux/md2core/minidump-2-core.cc:837: mapping.offset +=
iter->second.end_address -
I must admit that I don't understand why you're doing this line.

http://codereview.chromium.org/3152010/diff/1/4#newcode923
breakpad/src/tools/linux/md2core/minidump-2-core.cc:923: if
(crashinfo->dynamic_data != "") {
if (!crashinfo->dynamic_data.empty()) {

Powered by Google App Engine
This is Rietveld 408576698