r207031 - Fix leak introduced in r194610, found by LSan.

Nico Weber thakis at chromium.org
Wed Apr 23 16:06:01 PDT 2014


On Wed, Apr 23, 2014 at 3:51 PM, Sergey Matveev <earthdok at google.com> wrote:

>
>
>
> On Thu, Apr 24, 2014 at 1:41 AM, Nico Weber <nicolasweber at gmx.de> wrote:
>
>> Author: nico
>> Date: Wed Apr 23 16:41:51 2014
>> New Revision: 207031
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=207031&view=rev
>> Log:
>> Fix leak introduced in r194610, found by LSan.
>>
>> LSan folks: LSan pointed to
>>     #0 0x4953e0 in operator new[](unsigned long)
>> llvm/projects/compiler-rt/lib/asan/asan_new_delete.cc:64
>>     #1 0x7fb82af5372f in clang::RewriteRope::MakeRopeString(char const*,
>> char const*) llvm/tools/clang/lib/Rewrite/Core/RewriteRope.cpp:796
>> instead of to the actual leak, which made tracking this down slower than
>> it could have been.
>>
> Was it missing part of the stack between MakeRopeString() and
> convertCommentToXML()?
>

It said

    #0 0x4953e0 in operator new[](unsigned long)
llvm/projects/compiler-rt/lib/asan/asan_new_delete.cc:64
    #1 0x7f731fce472f in clang::RewriteRope::MakeRopeString(char const*,
char const*) llvm/tools/clang/lib/Rewrite/Core/RewriteRope.cpp:796
    #2 0x7f731fce79e1 in assign
llvm/tools/clang/include/clang/Rewrite/Core/RewriteRope.h:222
    #3 0x7f731fce79e1 in operator->
llvm/tools/clang/include/clang/Rewrite/Core/Rewriter.h:97
    #4 0x7f731fce79e1 in clang::Rewriter::getEditBuffer
llvm/tools/clang/lib/Rewrite/Core/Rewriter.cpp:235
    #5 0x7f731e687d41 in getRewrittenText
llvm/tools/clang/lib/Index/SimpleFormatContext.h:62
    #6 0x7f731e687d41 in formatTextOfDeclaration
llvm/tools/clang/lib/Index/CommentToXML.cpp:621
    #7 0x7f731e687d41 in (anonymous
namespace)::CommentASTToXMLConverter::visitFullComment
llvm/tools/clang/lib/Index/CommentToXML.cpp:959
    #8 0x7f731e682987 in
clang::comments::CommentVisitorBase<clang::comments::make_const_ptr,
(anonymous namespace)::CommentASTToXMLConverter, void>::visit
asan-boot/stage2/tools/clang/include/clang/AST/CommentNodes.inc:69
    #9 0x7f731e6819f3 in
clang::index::CommentToXMLConverter::convertCommentToXML
llvm/tools/clang/lib/Index/CommentToXML.cpp:1170

or similar. Pointing to the "FormatContext = new SimpleFormatContext"
would've been easier for me to understand, as that's the object that kept
the rope alive.


>
>> Modified:
>>     cfe/trunk/include/clang/Index/CommentToXML.h
>>     cfe/trunk/lib/Index/CommentToXML.cpp
>>
>> Modified: cfe/trunk/include/clang/Index/CommentToXML.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Index/CommentToXML.h?rev=207031&r1=207030&r2=207031&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/Index/CommentToXML.h (original)
>> +++ cfe/trunk/include/clang/Index/CommentToXML.h Wed Apr 23 16:41:51 2014
>> @@ -29,6 +29,7 @@ class CommentToXMLConverter {
>>
>>  public:
>>    CommentToXMLConverter() : FormatContext(0), FormatInMemoryUniqueId(0)
>> {}
>> +  ~CommentToXMLConverter();
>>
>>    void convertCommentToHTML(const comments::FullComment *FC,
>>                              SmallVectorImpl<char> &HTML,
>>
>> Modified: cfe/trunk/lib/Index/CommentToXML.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Index/CommentToXML.cpp?rev=207031&r1=207030&r2=207031&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Index/CommentToXML.cpp (original)
>> +++ cfe/trunk/lib/Index/CommentToXML.cpp Wed Apr 23 16:41:51 2014
>> @@ -1136,6 +1136,10 @@ void CommentASTToXMLConverter::appendToR
>>    Result << "]]>";
>>  }
>>
>> +CommentToXMLConverter::~CommentToXMLConverter() {
>> +  delete FormatContext;
>> +}
>> +
>>  void CommentToXMLConverter::convertCommentToHTML(const FullComment *FC,
>>                                                   SmallVectorImpl<char>
>> &HTML,
>>                                                   const ASTContext
>> &Context) {
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140423/f5f31210/attachment.html>


More information about the cfe-commits mailing list