Closed GoogleCodeExporter closed 9 years ago
Expanding on point #1. Presently, when symbolize=0, we use a dummy symbolizer
which returns 0 symbolized frames. POSIXSymbolizer will fall back to
module+offset if the on-line symbolizer fails, but the dummy symbolizer won't.
We don't normally notice that, because StackTrace::PrintStack reimplements this
fallback mechanism. Hence, we see module+offset in reports even when
symbolize=0, but suppression matching (which doesn't use PrintStack()) won't
work. This is bad - in some environments we don't have the on-line symbolizer,
but we still want to skip, e.g., the hundreds of false positives coming from
libfontconfig in Chrome.
Possible extra improvement: with symbolize=1, support a way to get just the
module name first, so we won't have to symbolize if the module name is
suppressed (this should improve performance somewhat).
Also, vis-a-vis #2, I'm guessing the use of symbolize callback needs to be
moved from PrintStack() to the symbolization code as well?
Original comment by earth...@google.com
on 16 Dec 2013 at 1:34
After the recent changes:
* We create a POSIXSymbolizer (and thus get <module>+<offset>) even if
symbolize=0. So, suppression by module name should now always work. In fact, we
have one extra path in PrintStackTrace which is not present in Symbolizer -
fall back to /proc/self/maps if symbolizer failed to return anything. Do you
think we should move this functionality to Symbolizer as well?
* symbolize callback functionality is removed.
* It is possible to add a method Symbolizer::GetPCModuleAndOffset(), but I'd
like to avoid it unless we see a measurable performance improvement.
Original comment by samso...@google.com
on 24 Dec 2013 at 7:02
> Do you think we should move this functionality to Symbolizer as well?
I don't see why not.
Original comment by earth...@google.com
on 24 Dec 2013 at 7:21
This should be fixed at r198025 by a series of recent commits. Currently
StackTrace::PrintStack is pretty straightforward, there is no symbolize
callback and no /proc/self/maps fallback.
Symbolizer::GetModuleNameAndOffsetForPC() is implemented and is used in LSan
suppression matcher.
Original comment by samso...@google.com
on 25 Dec 2013 at 8:23
Original issue reported on code.google.com by
earth...@google.com
on 29 Nov 2013 at 2:55