[cfe-dev] Valgrind; clang::ASTUnit::Parse -> lost memory?

Doug douglas.linder at gmail.com
Wed Nov 9 22:17:52 PST 2011


Mm... a minimal test case; I'll see if I can build one that replicates the
issue; gonna need some heavy refactoring to make that happen though;
perhaps over the weekend.

~
Doug.

On Thu, Nov 10, 2011 at 8:06 AM, Argyrios Kyrtzidis <kyrtzidis at apple.com>wrote:

> Hi Doug,
>
> Can you provide a complete test file the exhibits the leak, that we can
> compile and investigate ?
>
> -Argyrios
>
> On Nov 7, 2011, at 7:55 PM, Doug wrote:
>
> > Humm, when I run valgrind over my code I'm getting:
> >
> > ==30376==
> > ==30376== HEAP SUMMARY:
> > ==30376==     in use at exit: 1,928 bytes in 25 blocks
> > ==30376==   total heap usage: 28,193 allocs, 28,168 frees, 2,194,616
> bytes allocated
> > ==30376==
> > ==30376== 1,864 (1,056 direct, 808 indirect) bytes in 1 blocks are
> definitely lost in loss record 15 of 15
> > ==30376==    at 0x4C28973: operator new(unsigned long)
> (vg_replace_malloc.c:261)
> > ==30376==    by 0x57C7A62: clang::ASTUnit::Parse(llvm::MemoryBuffer*)
> (in /home/doug/projects/cparse/deps/llvm/build/lib/liblibclang.so.3.0)
> > ==30376==    by 0x57CB686:
> clang::ASTUnit::LoadFromCompilerInvocation(bool) (in
> /home/doug/projects/cparse/deps/llvm/build/lib/liblibclang.so.3.0)
> > ==30376==    by 0x57CBF0F: clang::ASTUnit::LoadFromCommandLine(char
> const**, char const**, llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>,
> llvm::StringRef, bool, bool, std::pair<std::string, llvm::PointerUnion<char
> const*, llvm::MemoryBuffer const*> >*, unsigned int, bool, bool,
> clang::TranslationUnitKind, bool, bool) (in
> /home/doug/projects/cparse/deps/llvm/build/lib/liblibclang.so.3.0)
> > ==30376==    by 0x54F5E14: clang_parseTranslationUnit_Impl (in
> /home/doug/projects/cparse/deps/llvm/build/lib/liblibclang.so.3.0)
> > ==30376==    by 0x5E3BD89: llvm::CrashRecoveryContext::RunSafely(void
> (*)(void*), void*) (in
> /home/doug/projects/cparse/deps/llvm/build/lib/liblibclang.so.3.0)
> > ==30376==    by 0x5E3BE90: RunSafelyOnThread_Dispatch(void*) (in
> /home/doug/projects/cparse/deps/llvm/build/lib/liblibclang.so.3.0)
> > ==30376==    by 0x5E72924: ExecuteOnThread_Dispatch(void*) (in
> /home/doug/projects/cparse/deps/llvm/build/lib/liblibclang.so.3.0)
> > ==30376==    by 0x6D82970: start_thread (pthread_create.c:304)
> > ==30376==    by 0x68DA92C: clone (clone.S:112)
> > ==30376==
> > ==30376== LEAK SUMMARY:
> > ==30376==    definitely lost: 1,056 bytes in 1 blocks
> >
> > I'm a little lost as to if this is something I'm doing wrong on my code,
> or some kind of clang internal thing (seems internal, but I wouldnt have
> expected clang to leak memory, so I suspect perhaps I'm not cleaning up
> correctly after use?).
> >
> > Any suggestions how to track this down?
> >
> > My code is roughly like:
> >
> > clang_createIndex(...);
> > clang_createTranslationUnitFromSourceFile(...);
> > clang_getTranslationUnitCursor(...);
> > clang_visitChildren(...);
> > clang_disposeTranslationUnit(...);
> > clang_disposeIndex(...);
> >
> > Is there some other shutdown I need to run?
> >
> > ~
> > Doug.
> > _______________________________________________
> > 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/20111110/e77490aa/attachment.html>


More information about the cfe-dev mailing list