
Hello, I figured that shared_ptr (boost 3.4, but I don't think this is really a boost problem) will lose memory in the following example #include <boost/shared_ptr.hpp> struct X { int y; }; typedef boost::shared_ptr<X> XRef; XRef getx() { throw 0; } int main(int argc, char** argv) { while (true) { XRef myX; try { myX = getx(); } catch(...) { } } } Compile: g++ -I/usr/local/include test.C -o test On every iteration of the while loop it loses memory and after approx. 1 million iterations it dies with signal 10 or 11. Changing that pattern to try { XRef y = getx(); myX = y; } catch(...) { } fixes the problem (I assume in that case it will call shared_ptrs copy constructor instead of its assignment operator). Platform is FreeBSD 6, gcc 3.4.6. It only happens when compiled like above (without optimization). On optimization levels 2 and above (-O2) it works ok. Maybe somebody using gcc 3.4 can check if this also happens on other platforms. gcc 4 works ok without any issues, so I assume this is a compiler problem. It might still be a good idea to put a warning in the documentation about this. cheers Michael