Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(298)

Issue 613002: Detect corrupt symbol files during minidump processing. Recover from the errors and use the good d… (Closed)

Can't Edit
Can't Publish+Mail
Start Review
Created:
11 years, 4 months ago by Ivan Penkov
Modified:
11 years, 4 months ago
CC:
google-breakpad-dev_googlegroups.com
Base URL:
http://google-breakpad.googlecode.com/svn/trunk/
Visibility:
Public.

Description

Detect corrupt symbol files during minidump processing.  Recover from the errors
and use the good data if possible.

More specifically:
 - Detect corrupt symbols during minidump processing and provide the list of
modules with corrupt symbols in the ProcessState.  This will allow listing the
corrupt symbol files in the final crash report.
 - Skip and recover from symbol data parse errors - don't give up until 100
parse errors are seen.
 - In order to recover from '\0' (null terminator) in the middle of a symbol
file, a couple of methods have to be updated to require both buffer pointer and
length.  Previously they required only a buffer pointer (char *) and the size of
the buffer was evaluated using strlen which is not reliable when the data is
corrupt.  Most of the changes are due to these signature updates.
 - Added and updated unittests.

Also, updated minidump_stackwalk to show a WARNING for corrupt symbols.  Output
looks like this:
...
Loaded modules:
0x000da000 - 0x000dafff  Google Chrome Canary  ???  (main)
0x000e0000 - 0x0417dfff  Google Chrome Framework  0.1500.0.3  (WARNING: Corrupt
symbols, Google Chrome Framework, 4682A6B4136436C4BFECEB62D498020E0)
0x044a8000 - 0x04571fff  IOBluetooth  0.1.0.0
...
Committed: https://code.google.com/p/google-breakpad/source/detail?r=1200

Patch Set 1 #

Patch Set 2 : #

Total comments: 11

Patch Set 3 : #

Patch Set 4 : #

Patch Set 5 : #

Patch Set 6 : #

Unified diffs Side-by-side diffs Delta from patch set Stats Patch
M src/google_breakpad/processor/basic_source_line_resolver.h View 1 chunk +1 line, -0 lines 0 comments Download
M src/google_breakpad/processor/fast_source_line_resolver.h View 1 chunk +1 line, -0 lines 0 comments Download
M src/google_breakpad/processor/process_state.h View 2 chunks +6 lines, -0 lines 0 comments Download
M src/google_breakpad/processor/source_line_resolver_base.h View 1 2 5 chunks +12 lines, -2 lines 0 comments Download
M src/google_breakpad/processor/source_line_resolver_interface.h View 1 2 2 chunks +8 lines, -2 lines 0 comments Download
M src/google_breakpad/processor/stack_frame_symbolizer.h View 1 chunk +4 lines, -1 line 0 comments Download
M src/google_breakpad/processor/stackwalker.h View 1 chunk +6 lines, -3 lines 0 comments Download
M src/google_breakpad/processor/symbol_supplier.h View 1 2 3 1 chunk +2 lines, -1 line 0 comments Download
M src/processor/basic_source_line_resolver.cc View 1 2 3 4 5 3 chunks +68 lines, -32 lines 0 comments Download
M src/processor/basic_source_line_resolver_types.h View 1 2 3 chunks +18 lines, -2 lines 0 comments Download
M src/processor/basic_source_line_resolver_unittest.cc View 1 chunk +6 lines, -4 lines 0 comments Download
M src/processor/exploitability_unittest.cc View 1 2 2 chunks +4 lines, -2 lines 0 comments Download
M src/processor/fast_source_line_resolver.cc View 1 2 2 chunks +9 lines, -2 lines 0 comments Download
M src/processor/fast_source_line_resolver_types.h View 1 2 3 chunks +8 lines, -2 lines 0 comments Download
M src/processor/fast_source_line_resolver_unittest.cc View 1 2 3 chunks +22 lines, -17 lines 0 comments Download
M src/processor/minidump_processor.cc View 1 chunk +2 lines, -1 line 0 comments Download
M src/processor/minidump_processor_unittest.cc View 1 2 4 chunks +13 lines, -10 lines 0 comments Download
M src/processor/minidump_stackwalk.cc View 1 2 3 4 5 5 chunks +14 lines, -6 lines 0 comments Download
M src/processor/module_comparer.cc View 2 chunks +7 lines, -3 lines 0 comments Download
M src/processor/module_serializer.cc View 3 chunks +13 lines, -6 lines 0 comments Download
M src/processor/process_state.cc View 1 chunk +3 lines, -2 lines 0 comments Download
M src/processor/simple_serializer-inl.h View 1 chunk +5 lines, -0 lines 0 comments Download
M src/processor/simple_symbol_supplier.cc View 1 2 3 2 chunks +11 lines, -8 lines 0 comments Download
M src/processor/simple_symbol_supplier.h View 1 2 1 chunk +2 lines, -1 line 0 comments Download
M src/processor/source_line_resolver_base.cc View 1 2 10 chunks +41 lines, -11 lines 0 comments Download
M src/processor/source_line_resolver_base_types.h View 1 2 1 chunk +9 lines, -1 line 0 comments Download
M src/processor/stack_frame_symbolizer.cc View 1 2 2 chunks +10 lines, -5 lines 0 comments Download
M src/processor/stackwalker.cc View 3 chunks +52 lines, -27 lines 0 comments Download
M src/processor/stackwalker_amd64_unittest.cc View 1 2 9 chunks +33 lines, -10 lines 0 comments Download
M src/processor/stackwalker_arm_unittest.cc View 1 2 13 chunks +49 lines, -14 lines 0 comments Download
M src/processor/stackwalker_unittest_utils.h View 1 2 3 1 chunk +9 lines, -6 lines 0 comments Download
M src/processor/stackwalker_x86_unittest.cc View 1 2 23 chunks +116 lines, -28 lines 0 comments Download
M src/tools/mac/crash_report/on_demand_symbol_supplier.h View 1 2 3 1 chunk +2 lines, -1 line 0 comments Download
M src/tools/mac/crash_report/on_demand_symbol_supplier.mm View 1 chunk +6 lines, -3 lines 0 comments Download

Messages

Total messages: 5
Ivan Penkov
.
11 years, 4 months ago #1
Mark Mentovai
Good idea. https://breakpad.appspot.com/613002/diff/1001/src/processor/basic_source_line_resolver.cc File src/processor/basic_source_line_resolver.cc (right): https://breakpad.appspot.com/613002/diff/1001/src/processor/basic_source_line_resolver.cc#newcode85 src/processor/basic_source_line_resolver.cc:85: uint64_t last_null_terminator = memory_buffer_size - 1; Seems ...
11 years, 4 months ago #2
Ivan Penkov
Done. https://breakpad.appspot.com/613002/diff/1001/src/processor/basic_source_line_resolver.cc File src/processor/basic_source_line_resolver.cc (right): https://breakpad.appspot.com/613002/diff/1001/src/processor/basic_source_line_resolver.cc#newcode85 src/processor/basic_source_line_resolver.cc:85: uint64_t last_null_terminator = memory_buffer_size - 1; On 2013/07/03 ...
11 years, 4 months ago #3
Mark Mentovai
LGTM Seems sound from my perspective, but this touches lots of things, so maybe Ted ...
11 years, 4 months ago #4
Ivan Penkov
11 years, 4 months ago #5
On 2013/07/04 01:32:47, Mark Mentovai wrote:
> LGTM
> 
> Seems sound from my perspective, but this touches lots of things, so maybe Ted
> or someone else wants to weigh in too. Your call if you want to get someone
> else’s opinion.

Sure, I can wait.  I was hoping to land this by the end of next week.
Sign in to reply to this message.

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld 1004:630ec63f810e-tainted