Could you please describe what the bug is? <div><br></div><div>I see that we have a use-after-return in __asan_register_global(uintptr_t addr, size_t size, const char *name)</div><div>but this function is only used by the gcc variant which I did not touch for ages. (Still, OMG)</div>
<div><br></div><div>In void __asan_register_globals(__asan_global *globals, size_t n), </div><div>which is used by the LLVM variant, I don't see a use-after-return. </div><div><br></div><div>(I like the idea to poison the memory allocated by LowLevelAllocator, I'll land a patch shortly). </div>
<div><br></div><div>--kcc </div><div><br><br><div class="gmail_quote">On Thu, Dec 15, 2011 at 7:32 AM, Alexander Potapenko <span dir="ltr"><<a href="mailto:glider@google.com">glider@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The attached patch fixes a use-after-return in ASan runtime.<br>
Previously stack-local objects representing global variables were<br>
passed to RegisterGlobal and put into the globals list that was<br>
scanned later, when those objects had been overwritten.<br>
<br>
Related changes: s/Print/Report in RegisterGlobal (we may need the<br>
PIDs when analyzing the logs), poison the memory returned by the<br>
LowLevelAllocator to prevent possible corruptions.<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
Alexander Potapenko<br>
Software Engineer<br>
Google Moscow<br>
</font></span></blockquote></div><br></div>