[LLVMdev] Avoid Valgrind's still-reachable leak warnings
Ryo Onodera
ryoqun at gmail.com
Wed Mar 27 19:55:04 PDT 2013
Hi, I'm Ryo Onodera.
This is my first post to this mailing list. Fist, thanks for creating
a great library!
We're using LLVM to support JIT in Rubinius (an alternative
implementation of Ruby, a dynamic programming language).
I'm submitting a small patch for a minor issue.
It solves still-reachable leak warnings from Valgrind. Example
warnings are shown at the end of this mail.
As these warnings weren't considered problematic in the past(*1), I
know this is really minor issue. But, I want to fix it to reduce
noises when using Valgrind, not resorting to Valgrind's suppression
mechanism.
This patch contains no functional change. And it should cause no problem.
Since this is my first patch to LLVM, please let me know any
corrections. I'll greatly appreciate them and happily update my patch.
Also, LLVM's codebase is really clean. It took little time to make this patch.
The actual warnings are like this:
==26332== 40 bytes in 1 blocks are still reachable in loss record 5 of 10
==26332== at 0x4C2B3F8: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==26332== by 0x165CC6C: llvm::sys::MutexImpl::MutexImpl(bool) (Mutex.cpp:49)
==26332== by 0xD41D5A:
llvm::sys::SmartMutex<true>::SmartMutex(bool) (Mutex.h:94)
==26332== by 0xD3E81F: void*
llvm::object_creator<llvm::sys::SmartMutex<true> >()
(ManagedStatic.h:26)
==26332== by 0x165AA95:
llvm::ManagedStaticBase::RegisterManagedStatic(void* (*)(), void
(*)(void*)) const (ManagedStatic.cpp:50)
==26332== by 0xD3C372:
llvm::ManagedStatic<llvm::sys::SmartMutex<true> >::operator*()
(ManagedStatic.h:68)
==26332== by 0x1605FE2:
llvm::PassRegistry::removeRegistrationListener(llvm::PassRegistrationListener*)
(PassRegistry.cpp:195)
==26332== by 0x15F1FC5:
llvm::PassRegistrationListener::~PassRegistrationListener()
(Pass.cpp:211)
==26332== by 0x15F2074: llvm::PassNameParser::~PassNameParser()
(Pass.cpp:221)
==26332== by 0x1604973: llvm::cl::list<llvm::PassInfo const*, bool,
llvm::PassNameParser>::~list() (in
/home/ryoqun/rubinius/ryoqun/bin/rbx)
==26332== by 0x5EE4900: __run_exit_handlers (exit.c:78)
==26332== by 0x5EE4984: exit (exit.c:100)
*1 http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-January/046828.html
Regards,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Avoid-Valgrind-s-still-reachable-leak-warnings.patch
Type: application/octet-stream
Size: 3602 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130328/c848b23e/attachment.obj>
More information about the llvm-dev
mailing list