Hash :
67eb2605
Author :
Date :
2020-11-12T17:16:05
Faster stack traces on Linux
Previously addr2line was called for every symbol separately. This was
glacially slow as every module's debug info was repeatedly reloaded.
With this change, contiguous symbols from the same module are batched
together and one call to addr2line is done.
Potential future optimization is to batch every symbol from the same
module, but capture the output of addr2line calls and interleave them to
match the stack. For example, currently 4 calls to addr2line are made
for the following stack trace:
moduleA(+addr1)
moduleA(+addr2)
moduleB(+addr3)
moduleB(+addr4)
moduleA(+addr5)
moduleA(+addr6)
moduleB(+addr7)
moduleB(+addr8)
while technically only two calls are necessary.
Bug: angleproject:5239
Change-Id: I58742b85409b0b74bb87272bc63e251a2d0fe0e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2535682
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>