<br><br><div class="gmail_quote">On Mon, Oct 10, 2011 at 11:00 PM, Louis Gerbarg <span dir="ltr"><<a href="mailto:lgerbarg@gmail.com">lgerbarg@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
During migrating some code from various hand rolled smart pointers to<br>
C++11 stuff I noticed a crash, and I am not sure if it is due to a bug<br>
in libc++ or me not understanding some of the dependencies in the new<br>
C++ standard. I was seeing crashes in ~shared_ptr, it appears to be<br>
walking into garbage, presumably looking for type info (the code has<br>
always been compiled -fno-rtti). If I turn on RTTI it goes away, and<br>
if I manually construct the shared_ptr instead of using make_shared it<br>
also goes away.<br>
<br>
Below is a reduced test case that shows what is going on. If this<br>
dependency should not exist I am happy to file a bug, but I wanted to<br>
confirm that it is in fact a bug.<br>
<br>
Louis<br>
<br>
/* testcase.cpp<br>
   /Developer/usr/bin/clang++  --std=c++0x --stdlib=libc++ -fno-rtti<br>
testcase.cpp<br>
*/<br>
<br>
//Crashes on scope collapse when ~shared_ptr is called.<br>
// Crash goes away if RTTI is turned on<br>
// Crash also goes away if the "SharedTest test = SharedTest(NULL);"<br>
instead of std::make_shared<br>
<br>
#include <memory><br>
<br>
typedef std::shared_ptr<void *> SharedTest;<br>
<br>
int main (void) {<br>
  SharedTest test = std::make_shared<void *>(NULL);<br>
  return 0;<br>
}<br></blockquote><div><br>I can't seem to repro this with ToT clang/llvm/libc++ on linux x86-64. Could you provide more details about your repro? <br><br>(& the resulting binary is valgrind clean too, which should reduce the chance that I'm just seeing a different case of undefined behaviour than you) <br>
<br>- David<br></div></div>