|
From: John R. <jr...@bi...> - 2013-07-04 18:06:27
|
> alloca(4096); > __yell(); > > (gdb) monitor get_vbits 0xffeffeed0 256 > ________ ________ ________ ________ ________ ________ ________ ________ > ________ ________ ________ ________ ________ ________ ________ ________ > ________ ________ ________ ________ ________ ________ ________ ________ > ________ ________ ________ ________ ________ ________ ________ ________ > ________ ________ ________ ________ ffffffff ffffffff ffffffff ffffffff > ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff > ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff > ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff > Address 0xFFEFFEED0 len 256 has 144 bytes unaddressable > > Any ideas? It seems to depend on: > > - Some (small) number of threads being spawned. > - A > page-sized alloca(). > - Reasonably sized memset on top. > - It's always the main thread which suffers. Thank you for the small, reproducible testcase! It's a bug in valgrind, so please file a bug report, and include the testcase. See the "Bug Reports" entry in the left column of the main page http://www.valgrind.org/ . Meanwhile the trivial workaround is to memset every result of alloca. Oh, and "#include <string.h>" |