<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 18, 2015 at 3:13 PM, Evgeniy Stepanov via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@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">eugenis added a comment.<br>
<br>
The problem is this:<br>
SmallVectorTemplateCommon only has space for the first element of the vector; the rest of the space is provided by SmallVector and used by effectively overflowing the field SmallVectorTemplateCommon. Sanitizers are OK with it because the memory is, in fact, allocated.<br>
<br>
Use-after-destroy detector complains about ~SmallVectorTemplateCommon accessing memory that belongs to SmallVector (the destructor for that has already ran at the point) when calling destructors for individual vector elements in destroy_range.</blockquote><div><br></div><div>Ah, once I put all the dtor execution order straight in my head, I see it.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5"><br>
<br>
<a href="http://reviews.llvm.org/D12970" rel="noreferrer" target="_blank">http://reviews.llvm.org/D12970</a><br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div></div>