<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Dec 25, 2013 at 7:38 PM, <a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a> <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Its generally been by design that tblgen leaks. Might be nice to fix one day but it's been that way for a while now so don't expect it to be fixed soon.<br>
<br>If thats the suppression mechanism of choice</blockquote><div>It is.  </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
 (I would've expected a build flag option)</blockquote><div><br></div><div>That would not be trivial. </div><div>The link-time flag is -fsanitize=address, and we do want to pass it because we do want to check TableGen for addressability bugs</div>
<div>(and because if we don't pass it at link time we can not use it at compile time, which will cause a huge cmake/make challenge).</div><div>Inventing a link time flag that will keep asan but remove lsan is not worth it. </div>
<div>There is the run-time flag (ASAN_OPTIONS=detect_leaks=0|1) which turns lsan on/off,</div><div> but again passing it selectively to TableGen is harder than my simple patch. </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
 for lsan, I'd say go for it.<br></blockquote><div><br></div><div>Ok, unless someone objects. </div><div><br></div><div>--kcc </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<br>(Maybe there's some existing build flag handling for valgrind so as not to leak check tblgen, but that would be a runtime flag, not build time)<div class=""><div class="h5"><p dir="ltr"></p>
<p dir="ltr">On Wednesday, December 25, 2013 7:08:27 AM, Kostya Serebryany <<a href="mailto:kcc@google.com" target="_blank">kcc</a><a href="mailto:kcc@google.com" target="_blank">@</a><a href="mailto:kcc@google.com" target="_blank">google.com</a>> wrote:</p>

<blockquote><p dir="ltr">Hi, <br></p>
<p dir="ltr">We are trying to enable LeakSanitizer on our asan/msan llvm bootstrap bot</p>
<p dir="ltr">(<a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/" target="_blank">http://</a><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/" target="_blank">lab.llvm.org</a><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/" target="_blank">:8011/builders/sanitizer-x86_64-</a><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/" target="_blank">linux</a><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/" target="_blank">-bootstrap/</a>).</p>


<p dir="ltr">In clang itself there are two leaks </p>
<p dir="ltr">(<a href="http://llvm.org/bugs/show_bug.cgi?id=18318" target="_blank">http://</a><a href="http://llvm.org/bugs/show_bug.cgi?id=18318" target="_blank">llvm.org</a><a href="http://llvm.org/bugs/show_bug.cgi?id=18318" target="_blank">/bugs/show_bug.cgi?id=18318</a>, <a href="http://llvm-reviews.chandlerc.com/D2472" target="_blank">http://llvm-reviews.chandlerc.com/D2472</a>) </p>


<p dir="ltr">and one lsan-hostile feature (<a href="http://llvm.org/bugs/show_bug.cgi?id=18320" target="_blank">http://llvm.org/bugs/show_bug.cgi?id=18320</a>),</p>
<p dir="ltr">all of which are easy to fix.<br></p>
<p dir="ltr">And there are also lots of leaks in TableGen.</p>
<p dir="ltr">Would anyone be interested in fixing TableGen leaks?</p>
<p dir="ltr">I'd guess not since TableGen is not a user-facing utility, leaks there are not too harmful.</p>
<p dir="ltr">If so, I'd like to disable lsan for TableGen so that </p>
<p dir="ltr">we can enable lsan on the bootstrap bot soon. Objections? <br></p>
<p dir="ltr">--kcc <br></p>
<p dir="ltr">Index: utils/TableGen/TableGen.cpp</p>
<p dir="ltr">===================================================================</p>
<p dir="ltr">--- utils/TableGen/TableGen.cpp (revision 198007)</p>
<p dir="ltr">+++ utils/TableGen/TableGen.cpp (working copy)</p>
<p dir="ltr">@@ -180,3 +180,7 @@</p>
<p dir="ltr"> </p>
<p dir="ltr">   return TableGenMain(argv[0], &LLVMTableGenMain);</p>
<p dir="ltr"> }</p>
<p dir="ltr">+</p>
<p dir="ltr">+extern "C" {</p>
<p dir="ltr">+int __lsan_is_turned_off() { return 1; }</p>
<p dir="ltr">+}  // extern "C"</p>
<p dir="ltr">Index: tools/clang/utils/TableGen/TableGen.cpp</p>
<p dir="ltr">===================================================================</p>
<p dir="ltr">--- tools/clang/utils/TableGen/TableGen.cpp     (revision 198007)</p>
<p dir="ltr">+++ tools/clang/utils/TableGen/TableGen.cpp     (working copy)</p>
<p dir="ltr">@@ -248,3 +248,7 @@</p>
<p dir="ltr"> </p>
<p dir="ltr">   return TableGenMain(argv[0], &ClangTableGenMain);</p>
<p dir="ltr"> }</p>
<p dir="ltr">+</p>
<p dir="ltr">+extern "C" {</p>
<p dir="ltr">+int __lsan_is_turned_off() { return 1; }</p>
<p dir="ltr">+}  // extern "C"<br><br></p>
</blockquote>
<p dir="ltr"><br>
</p>
</div></div></blockquote></div><br></div></div>