|
Attached is a first cut at a NetworkSourceLineServer as well as a
NetworkSourceLineResolver. The Server contains a SymbolSupplier and
SourceLineResolver, and listens for requests via UDP from clients. The
NetworkSourceLineResolver class implements both the SymbolSupplier and
SourceLineResolverInterface, proxying requests to the server via UDP. The
primary benefit here is that once the server has loaded a particular symbol
file, it can simply keep it in memory for quick access.
A simple test with a Firefox minidump + the associated symbols shows that on my
machine, the current minidump_stackwalk takes about 1.5 seconds, a first run of
minidump_stackwalk using NetworkSourceLineResolver takes about 6.5 seconds, and
following runs take about 0.35 seconds (when the server already has all symbols
in memory).
The patch needs a once-over for style and other nits, and also has three major
caveats right now:
1) No unit tests for added functionality--I'll write them before we get to
landing, I just didn't get around to it yet.
2) No way to evict loaded modules/symbol files. This means that the server will
grow in memory size until it runs out. I think fixing this won't be too hard,
just need to add a LRU cache of symbol files, then add a method to
BasicSourceLineResolver to let it remove a loaded module.
3) The server is single-threaded, which means that multiple clients hitting the
same server could cause delays, mostly when the server is forced to load symbol
files. Adding a bunch of locking doesn't sound very fun, and probably doesn't
solve the problem much anyway, since you'd just be waiting on a lock instead of
waiting on the server. I'm not sure how much of a problem this would be in
practice, it bears testing.
There's also a hack in this patch that's just for testing, I switched
minidump_stackwalk to use NetworkSourceLineResolver.
Total comments: 20
Total comments: 9
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats |
Patch |
|
|
Makefile.am
|
View
|
1
2
3
|
15 chunks |
+130 lines, -7 lines |
0 comments
|
Download
|
|
|
configure.ac
|
View
|
2
3
|
1 chunk |
+9 lines, -0 lines |
0 comments
|
Download
|
|
|
src/config.h.in
|
View
|
2
3
|
1 chunk |
+3 lines, -0 lines |
0 comments
|
Download
|
|
|
src/google_breakpad/processor/basic_source_line_resolver.h
|
View
|
1
2
3
|
2 chunks |
+7 lines, -6 lines |
0 comments
|
Download
|
|
|
src/google_breakpad/processor/network_source_line_resolver.h
|
View
|
2
3
|
1 chunk |
+168 lines, -0 lines |
0 comments
|
Download
|
|
|
src/google_breakpad/processor/source_line_resolver_interface.h
|
View
|
1
2
3
|
5 chunks |
+14 lines, -10 lines |
0 comments
|
Download
|
|
|
src/processor/basic_code_module.h
|
View
|
1
2
3
|
1 chunk |
+15 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/basic_source_line_resolver.cc
|
View
|
1
2
3
|
23 chunks |
+97 lines, -164 lines |
0 comments
|
Download
|
|
|
src/processor/basic_source_line_resolver_unittest.cc
|
View
|
1
2
3
|
10 chunks |
+60 lines, -44 lines |
0 comments
|
Download
|
|
|
src/processor/binarystream.cc
|
View
|
2
3
|
1 chunk |
+123 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/binarystream.h
|
View
|
2
3
|
1 chunk |
+88 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/binarystream_unittest.cc
|
View
|
2
3
|
1 chunk |
+432 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/cfi_frame_info.cc
|
View
|
|
2 chunks |
+23 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/cfi_frame_info.h
|
View
|
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/cfi_frame_info_unittest.cc
|
View
|
|
5 chunks |
+14 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/network_interface.h
|
View
|
2
3
|
1 chunk |
+62 lines, -0 lines |
2 comments
|
Download
|
|
|
src/processor/network_source_line_protocol.h
|
View
|
2
3
|
1 chunk |
+162 lines, -0 lines |
1 comment
|
Download
|
|
|
src/processor/network_source_line_resolver.cc
|
View
|
1
2
3
|
1 chunk |
+437 lines, -0 lines |
1 comment
|
Download
|
|
|
src/processor/network_source_line_resolver_server_unittest.cc
|
View
|
|
1 chunk |
+207 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/network_source_line_resolver_unittest.cc
|
View
|
2
3
|
1 chunk |
+535 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/network_source_line_server.cc
|
View
|
1
2
3
|
1 chunk |
+434 lines, -0 lines |
4 comments
|
Download
|
|
|
src/processor/network_source_line_server.h
|
View
|
1
2
3
|
1 chunk |
+136 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/network_source_line_server_unittest.cc
|
View
|
2
3
|
1 chunk |
+954 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/source_daemon.cc
|
View
|
1
2
3
|
1 chunk |
+127 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/stackwalker.cc
|
View
|
1
2
3
|
4 chunks |
+4 lines, -4 lines |
0 comments
|
Download
|
|
|
src/processor/tokenize.cc
|
View
|
1
2
3
|
1 chunk |
+76 lines, -0 lines |
1 comment
|
Download
|
|
|
src/processor/tokenize.h
|
View
|
1
2
3
|
1 chunk |
+61 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/udp_network.cc
|
View
|
2
3
|
1 chunk |
+185 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/udp_network.h
|
View
|
2
3
|
1 chunk |
+73 lines, -0 lines |
0 comments
|
Download
|
|
|
src/processor/windows_frame_info.h
|
View
|
2
3
|
3 chunks |
+68 lines, -0 lines |
0 comments
|
Download
|
Total messages: 15
|