<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 10, 2016 at 6:45 AM, Kim Gräsman via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi all,<br>
<br>
I'm debugging a memory leak in a large code base, and it's not going<br>
very well. Let's say I have plenty of time to think about other<br>
things.<br>
<br>
I was wondering if it would be possible to use the sanitizer<br>
infrastructure to generate memory usage snapshots, something like a<br>
report mapping allocation backtrace to number of outstanding<br>
allocations.<br>
<br>
With something like that in place, it should be easy to catch leaks<br>
where memory is still reachable but kept alive indefinitely. Take two<br>
snapshots and diff -- the backtraces growing in outstanding<br>
allocations are prime suspects. I think gperftools/tcmalloc has a mode<br>
like this, but I haven't used it myself.<br>
<br>
Is this at all feasible? </blockquote><div><br></div><div>Yes. Take a look at lib/asan/asan_memory_profile.cc and </div><div>test/asan/TestCases/Linux/print_memory_profile_test.cc<br></div><div>It's a toy memory profiler which prints the current allocated memory chunks. </div><div>Very close to what you are describing (if not exactly that)</div><div><br></div><div>I used this functionality myself in a situation similar to yours and it helped.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Are patches welcome? </blockquote><div><br></div><div>It depends. I am currently  not ready to review large refactoring in this code because </div><div>I hope to make one myself (maybe...)</div><div>Small incremental improvements -- yes. </div><div><br></div><div>--kcc </div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I can't say I understand<br>
ASAN very well, but it feels like there is basic infrastructure<br>
already in place for this.<br>
<br>
Thanks,<br>
- Kim<br>
______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div></div>