<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Feb 12, 2016 at 7:53 AM, Dan Liew <span dir="ltr"><<a href="mailto:dan@su-root.co.uk" target="_blank">dan@su-root.co.uk</a>></span> wrote:<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"><span class="">
> This is because your STL was not compiled with MSan. The std::ofstream<br>
> constructor is provided by libstdc++, the writes are not instrumented, and<br>
> MSan never sees the initialization. Unfortunately, MSan is not very useful<br>
> unless you recompile your *entire* application minus glibc with msan. =/<br>
><br>
> It is possible to build an MSan-ified libc++ and use it if you want to keep<br>
> trying, but it's involved.<br>
<br>
</span>Thanks for pointing out. Out of interest how is MSan able to work with<br>
a non MSan-ified glibc?<br></blockquote><div><br></div><div>By intercepting almost the entire libc interface and annotating inputs and outputs:</div><div><a href="https://github.com/llvm-mirror/compiler-rt/blob/master/lib/sanitizer_common/sanitizer_common_interceptors.inc">https://github.com/llvm-mirror/compiler-rt/blob/master/lib/sanitizer_common/sanitizer_common_interceptors.inc</a></div><div>It's a C ABI boundary, so this is hard but feasible. Interposing all of libstdc++ is less feasible.</div></div></div></div>