aboutsummaryrefslogtreecommitdiff
path: root/src/processor/stackwalker.cc
diff options
context:
space:
mode:
authornealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e>2010-03-03 01:29:04 +0000
committernealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e>2010-03-03 01:29:04 +0000
commit19374d263649a51c8bb56f2f01d3466905847670 (patch)
tree1c0c3d639bb651ce56fa57dcb6093910e2301cf3 /src/processor/stackwalker.cc
parent81aadb99a6acf7f1175e8c6f538a609c96b3a961 (diff)
downloadgoogle-breakpad-19374d263649a51c8bb56f2f01d3466905847670.tar.gz
Fix to cache NOT_FOUND results from symbol supplier on a per-minidump basis
http://breakpad.appspot.com/64001 R=ted.mielczarek, brdevmn A=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@543 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/processor/stackwalker.cc')
-rw-r--r--src/processor/stackwalker.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/processor/stackwalker.cc b/src/processor/stackwalker.cc
index 3a3725fa..3b9a313a 100644
--- a/src/processor/stackwalker.cc
+++ b/src/processor/stackwalker.cc
@@ -93,6 +93,8 @@ bool Stackwalker::Walk(CallStack *stack) {
frame->module = module;
if (resolver_ &&
!resolver_->HasModule(frame->module->code_file()) &&
+ no_symbol_modules_.find(
+ module->code_file()) == no_symbol_modules_.end() &&
supplier_) {
string symbol_data, symbol_file;
SymbolSupplier::SymbolResult symbol_result =
@@ -105,6 +107,7 @@ bool Stackwalker::Walk(CallStack *stack) {
symbol_data);
break;
case SymbolSupplier::NOT_FOUND:
+ no_symbol_modules_.insert(module->code_file());
break; // nothing to do
case SymbolSupplier::INTERRUPT:
return false;