[llvm-commits] [Sanitizer] PATCH: external llvm-symbolizer tool for sanitizers

Alexey Samsonov samsonov at google.com
Thu Aug 23 23:44:47 PDT 2012


On Thu, Aug 23, 2012 at 3:58 PM, Dmitry Vyukov <dvyukov at google.com> wrote:

>
> On Thu, Aug 23, 2012 at 3:52 PM, Alexey Samsonov <samsonov at google.com>wrote:
>
>>
>>>  And a follow-up from looking at the output. File/line numbers seem to
>>>> be fetched correctly, but that isn't always true for function names:
>>>> if instruction belongs to inlined instance of a function, then we may
>>>> (and often do) instead return the function it is inlined into.
>>>>
>>>
>>> It is the correct behavior.
>>>
>>
>> Not quite :) I mean, we output file/line/column of inlined function and
>> function name of function it is inlined into.
>>
>>
>
> Then it's file/line/column that's incorrect.
>

>
>> As a bonus we may also output inlined frames, but by default we must
>>> output inlined-into frame.
>>>
>>
No. If you want to symbolize, say, some random "xor" instruction in the
code, you'd want to see the actual place in code where this
xor instruction takes place, not some place where it was inlined, 5 frames
upper. This is what addr2line does.
Anyway, I see it's just time to implement reading information about inlined
frames.


>
>>>
>>>
>>>>  This
>>>> should be fixed in DebugInfo library, I'll work on that.
>>>>
>>>> On Thu, Aug 23, 2012 at 2:30 PM, Kostya Serebryany <kcc at google.com>wrote:
>>>>
>>>>> Excellent numbers!
>>>>> addr2line performance and memory usage has been the greatest
>>>>> inconvenience for many users.
>>>>> Please commit unless there are objections from someone else.
>>>>>
>>>>> --kcc
>>>>>
>>>>>
>>>>> On Thu, Aug 23, 2012 at 2:05 PM, Alexey Samsonov <samsonov at google.com>wrote:
>>>>>
>>>>>> For the record, I've ran some measurements on Chromium (fetched
>>>>>> random instruction addresses from binary and symbolized them with a tool):
>>>>>>
>>>>>> chrome + "-gline-tables-only" (0.5G binary)
>>>>>> tool             # of addresses       time                memory
>>>>>> addr2line     1                          0m16.803s
>>>>>> symbolizer   1                          0m0.501s
>>>>>> addr2line     100                       0m22.474s
>>>>>> symbolizer   100                       0m1.417s
>>>>>> addr2line     10k                       1m45.055s     2.1G
>>>>>> symbolizer   10k                       1m23.271s     440 Mb
>>>>>>
>>>>>> chrome + "-g" (2G binary):
>>>>>> addr2line     1                          0m36.101s
>>>>>> symbolizer   1                          0m10.101s
>>>>>> addr2line     100                       0m46.125s
>>>>>> symbolizer   100                       0m10.005s
>>>>>> addr2line     10k                       2m32.614s     9.2G
>>>>>> symbolizer   10k                       1m41.288s     3.9G
>>>>>>
>>>>>>
>>>>>> On Tue, Aug 21, 2012 at 7:34 PM, Alexey Samsonov <samsonov at google.com
>>>>>> > wrote:
>>>>>>
>>>>>>> Hi!
>>>>>>>
>>>>>>> This code contains a stand-alone file that makes use of existing
>>>>>>> LLVM libraries to symbolize instruction addresses of a module.
>>>>>>> Though it looks like an another llvm tool, we can temporary keep it
>>>>>>> at //projects/compiler-rt (as currently we're the only interested users,
>>>>>>> and we need to compile this tool for the same targets we build
>>>>>>> ASan/TSan for). This file may be run in a separate process, and
>>>>>>> communicate with caller via stdin/stdout. The key differences from
>>>>>>> addr2line is that the tool is capable of symbolizing code from
>>>>>>> different modules and is able to consult both symbol table and debug
>>>>>>> info for fetching function name (which would be helpful
>>>>>>> if the binary is compiled with -gline-tables-only).
>>>>>>>
>>>>>>> Code review: http://codereview.appspot.com/6465080/
>>>>>>>
>>>>>>> --
>>>>>>> Alexey Samsonov, MSK
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Alexey Samsonov, MSK
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Alexey Samsonov, MSK
>>>>
>>>>
>>>
>>
>>
>> --
>> Alexey Samsonov, MSK
>>
>>
>


-- 
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120824/2aa28185/attachment.html>


More information about the llvm-commits mailing list