<div dir="ltr">Sorry for delay. (cfe-dev is not the list I usually monitor for asan problems).<div><br></div><div>Suppressing new-delete mismatches might be useful in some rare cases</div><div>(and maybe yours is like this: buggy third party code that you don't control).</div><div>But I am reluctant to add more suppression mechanisms unless many people ask for it (extra complexity is justified only if there are enough users who need it; you are the first, AFAICT. I am especially careful with suppressions as I've seen them hurt the testing process many times). </div><div><br></div><div>If you feel strong, please send a patch with a test and doc update to llvm-commits</div><div>using phabricator. (CC me and <a href="mailto:eugenis@google.com">eugenis@google.com</a>).</div><div><br></div><div><br></div><div>--kcc </div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 10, 2016 at 8:16 AM, Stephan Bergmann 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I need to suppress a new-delete-type-mismatch reported in an external library.  ASan suggests a global ASAN_OPTIONS=new_delete_type_mismatch=0, but I noticed that there's an ASAN_OPTIONS=suppressions=... feature now, so I thought I might be able to make the suppression more targeted.<br>
<br>
However, interceptor_via_fun/lib appears to only be targeting the various interceptors in lib/asan/asan_interceptors.cc, not ReportNewDeleteSizeMismatch called from lib/asan/asan_allocator.cc.  But a simple hack<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
diff --git a/lib/asan/asan_allocator.cc b/lib/asan/asan_allocator.cc<br>
index fb433bb..393f80a 100644<br>
--- a/lib/asan/asan_allocator.cc<br>
+++ b/lib/asan/asan_allocator.cc<br>
@@ -20,6 +20,7 @@<br>
 #include "asan_poisoning.h"<br>
 #include "asan_report.h"<br>
 #include "asan_stack.h"<br>
+#include "asan_suppressions.h"<br>
 #include "asan_thread.h"<br>
 #include "sanitizer_common/sanitizer_allocator_interface.h"<br>
 #include "sanitizer_common/sanitizer_flags.h"<br>
@@ -530,6 +531,7 @@ struct Allocator {<br>
<br>
     if (delete_size && flags()->new_delete_type_mismatch &&<br>
         delete_size != m->UsedSize()) {<br>
+if (!IsStackTraceSuppressed(stack))<br>
       ReportNewDeleteSizeMismatch(p, m->UsedSize(), delete_size, stack);<br>
     }<br>
<br>
</blockquote>
<br>
showed that it would work to (mis-/re-?)use the suppression file's interceptor_via_fun/lib also for reports from ASan's allocation "interceptor".<br>
<br>
Would that be something that is fine as-is (extending it to also cover other Reports from the allocator, like ReportAllocTypeMismatch called a few lines above in Allocator::Deallocate), or what do people think?<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">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/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div>