[cfe-dev] leaks in clang (many!)

Nico Weber thakis at chromium.org
Wed Apr 23 22:32:32 PDT 2014


On Wed, Apr 23, 2014 at 10:30 PM, David Blaikie <dblaikie at gmail.com> wrote:

> On Wed, Apr 23, 2014 at 10:21 PM, Nico Weber <thakis at chromium.org> wrote:
> > On Wed, Apr 23, 2014 at 10:09 PM, Kostya Serebryany <kcc at google.com>
> wrote:
> >>
> >>
> >>
> >>
> >> On Thu, Apr 24, 2014 at 1:53 AM, Nico Weber <thakis at chromium.org>
> wrote:
> >>>
> >>> Do you have a bot that provides an up-to-date list of these reports?
> >>
> >>
> >> No bot, but I've just updated
> http://llvm.org/bugs/show_bug.cgi?id=19521
> >> with the new log.
> >> The leak from http://llvm.org/bugs/show_bug.cgi?id=19520 appears over
> 1000
> >> times while running check-clang,
> >> so I suppressed it, all other leaks are in the log:
> >> http://llvm.org/bugs/attachment.cgi?id=12428
> >> Quite a few still.
> >
> >
> > Down from 4200 to 1500 (or 2500, if you don't count the 1000 suppressed),
> > that's good progress :-)
> >
> > Many of these are in CGDebugInfo
>
> Could you point me to the bugs/stack traces/repro steps for CGDebugInfo
> leaks?
>

Extract and open the file Kostya attached, look for "leak of". About the
first 40% are in CGDebugInfo. (Search for "CGDebugInfo::" for example).
You're looking for stacks like

Direct leak of 536 byte(s) in 1 object(s) allocated from:
    #0 0x7ba998 in __interceptor_malloc
/home/kcc/llvm/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:75
    #1 0x1e8f933 in llvm::MDNode::getTemporary(llvm::LLVMContext&,
llvm::ArrayRef<llvm::Value*>) /home/kcc/llvm/lib/IR/Metadata.cpp:285
    #2 0x6332104 in llvm::DIBuilder::createForwardDecl(unsigned int,
llvm::StringRef, llvm::DIDescriptor, llvm::DIFile, unsigned int, unsigned
int, unsigned long, unsigned long, llvm::StringRef)
/home/kcc/llvm/lib/IR/DIBuilder.cpp:905
    #3 0x36027a9 in
clang::CodeGen::CGDebugInfo::getOrCreateRecordFwdDecl(clang::RecordType
const*, llvm::DIDescriptor)
/home/kcc/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp:626
    #4 0x361b4c1 in
clang::CodeGen::CGDebugInfo::CreateLimitedType(clang::RecordType const*)
/home/kcc/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp:2305
    #5 0x36113a8 in
clang::CodeGen::CGDebugInfo::getOrCreateLimitedType(clang::RecordType
const*, llvm::DIFile)
/home/kcc/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp:2260
    #6 0x360fb99 in
clang::CodeGen::CGDebugInfo::CreateTypeDefinition(clang::RecordType const*)
/home/kcc/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp:1537



>
> > and some in CodeGenFunction – if someone
> > who knows that code could look at these (it's probably just 2-4 bugs),
> > that'd be a huge help.
> >
> >>
> >>
> >>
> >> There are also 14  leaks while running check-llvm, added a separate log:
> >> http://llvm.org/bugs/attachment.cgi?id=12429
> >>
> >>
> >>>
> >>> r207031 probably fixes many of the convertCommentToXML stacks.
> >>
> >> Thanks for this and all the other fixes!
> >>
> >> --kcc
> >>>
> >>>
> >>>
> >>> On Wed, Apr 23, 2014 at 6:25 AM, Kostya Serebryany <kcc at google.com>
> >>> wrote:
> >>>>
> >>>> Manuel mentions that clang has some intentional leaks.
> >>>> That's right, and we handle them using BuryPointer
> >>>> (./lib/Frontend/CompilerInvocation.cpp).
> >>>> So if there are more *intentional* leaks we need to bury them too to
> let
> >>>> LSan find the interesting ones.
> >>>>
> >>>> --kcc
> >>>>
> >>>>
> >>>> On Wed, Apr 23, 2014 at 4:25 PM, Kostya Serebryany <kcc at google.com>
> >>>> wrote:
> >>>>>
> >>>>> Hi,
> >>>>>
> >>>>> TL;DR: there are tons of leaks in Clang, please help us fix them.
> >>>>>
> >>>>> We have a build bot that runs clang bootstrap under AddressSanitizer
> >>>>> (ASan).
> >>>>> LeakSanitizer (LSan, a leak detector that runs as part of ASan) is
> >>>>> enabled on that bot,
> >>>>> but as we've learned today only on part of the bootstrap actually
> runs
> >>>>> LSan.
> >>>>> LSan is enabled by the env. var ASAN_OPTIONS=detect_leaks=1 and we
> have
> >>>>> this env. var. set on the bot so the 3-rd stage build uses it.
> >>>>> However the lit runner clears the environment and the lit
> >>>>> tests were not running under lsan until today, when I tried to enable
> >>>>> lsan by default.
> >>>>>
> >>>>> This has discovered tons of leaks and I reverted the change.
> >>>>> The leaks happen in various modes that are not exercised during
> regular
> >>>>> self-compilation on linux,
> >>>>> e.g. static analyzer, -emit-llvm, Windows ABI, etc.
> >>>>> I've filed a few bugs (19520 19522 19523 19524) but there are dozens
> >>>>> more reports left.
> >>>>>
> >>>>> If you care about leaks in clang, please check
> >>>>> http://llvm.org/bugs/attachment.cgi?id=12423
> >>>>> and see if any of these leaks are in your code.
> >>>>>
> >>>>> Thanks,
> >>>>>
> >>>>> --kcc
> >>>>
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> cfe-dev mailing list
> >>>> cfe-dev at cs.uiuc.edu
> >>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> >>>>
> >>>
> >>
> >
> >
> > _______________________________________________
> > cfe-dev mailing list
> > cfe-dev at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140423/4a55cd7e/attachment.html>


More information about the cfe-dev mailing list