<div style="font-family: arial, helvetica, sans-serif; font-size: 10pt"><br><br><div class="gmail_quote">On Sun, Nov 11, 2012 at 10:10 PM, Dmitri Gribenko <span dir="ltr"><<a href="mailto:gribozavr@gmail.com" target="_blank">gribozavr@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Sun, Nov 11, 2012 at 7:32 PM, Dmitry N. Mikushin <<a href="mailto:maemarcus@gmail.com">maemarcus@gmail.com</a>> wrote:<br>

> In case of stack reuse there should be another llvm.livetime start/end<br>
> region, isn't it?<br>
<br>
</div>I was thinking about something like this:<br>
<br>
$ cat a.c<br>
#include <stdio.h><br>
<br>
void store_ptr(int *);<br>
int *load_ptr(void);<br>
int ret_int(void);<br>
void use_ptr(int *);<br>
extern int global;<br>
<br>
int main()<br>
{<br>
  {<br>
    int i[8];<br>
    store_ptr(i);<br>
  }<br>
  {<br>
    int j[8];<br>
    j[0] = ret_int();<br>
    use_ptr(j);<br>
    int *k = load_ptr();<br>
    *k = 42;<br>
    use_ptr(j);<br>
    printf("%d\n", global);<br>
  }<br>
}<br>
<br>
$ cat b.c<br>
static int *ptr;<br>
<br>
void store_ptr(int *p) { ptr = p; }<br>
int *load_ptr(void) { return ptr; }<br>
int ret_int() { return 7; }<br>
int global;<br>
void use_ptr(int *p) { global = *p; }<br>
<br>
Currently ASan does not catch an issue in this code, but with lifetime<br>
markers emitted by Clang, it should.<br>
<br>
Here 'i' and 'j' would occupy different addresses without stack reuse.<br>
 In this case, 'i' would be still allocated while 'j' is alive, but<br>
'i' would be poisoned.  With stack reuse, 'i' and 'j' will most likely<br>
occupy the same block of memory.<br></blockquote><div><br></div><div>I see. But we can explicitly turn off stack reuse optimization in ASan mode.</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>
Dmitri<br>
<br>
--<br>
main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if<br>
(j){printf("%d\n",i);}}} /*Dmitri Gribenko <<a href="mailto:gribozavr@gmail.com">gribozavr@gmail.com</a>>*/<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div><br>
</div>