[llvm-commits] [LLVMdev] Prevent unbounded memory consuption of long lived JIT processes

NAKAMURA Takumi geek4civic at gmail.com
Tue Mar 15 18:39:41 PDT 2011


Good morning Jose,

Thank you to send patches.

  - Please send patches to llvm-commits.
  - Please make patches with "--attach". You may add "format.attach"
to git config.

I have not seen yours yet, but I pushed yours to github;
https://github.com/chapuni/LLVM/compare/ed4edf9e...jfonseca%2F20110316
(Excuse me I could not input accent)

...Takumi


On Wed, Mar 16, 2011 at 8:15 AM,  <jfonseca at vmware.com> wrote:
> This series of patches address several issues causing memory usage to grow
> indefinetely on a long lived process.
>
> These are not convenional leaks -- memory would have been freed when the LLVM
> context or/and JIT engine is destroyed -- but for as long as they aren't the
> memory is usage effectively ubounded.
>
> The issues were found using valgrind with '--show-reachable=yes' option:
> 1. Compile a bunch of functions with JIT once; delete the result; and exit
>   without destroying LLVM context nor JIT engine. (valgrind will report a
>   bunch of unfreed LLVM objects)
> 2. Do as 1, but compile and delete the functions twice
> 3. Ditto three times.
> 4. Etc.
>
> Flawless code should not cause the memory usage to increase when compiling the
> same -- ie valgrind's log for every run should show the very same unfreed
> objects, regardless of the number of times a given code was compilation, but
> that was not the case. The attached patches cover most of the causes for new
> objects being allocated.
>
> It should be possible to automate such test, but I didn't get that far.




More information about the llvm-commits mailing list