
On 2009-11-15 01:04:44 +1100, Alastair Rankine
On 2009-11-10 21:50:20 +1100, Alastair Rankine
said: Just curious if anyone else has seen this or anything like it? Platform is Mac OS X 10.6.1, gcc 4.2.1, boost 1.40.0 installed from MacPorts, compiling 64-bit (default).
% g++ -o streamtest_bad -ggdb -L/opt/local/lib -lboost_unit_test_framework-mt-d streamtest.cpp % ./streamtest_bad streamtest_bad(63554) malloc: *** error for object 0x7fff7008a500: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug zsh: abort ./streamtest_bad %
OK here's the fix for whoever is interested. Basically it seems to be an instance of this problem: http://www.newartisans.com/2009/10/a-c-gotcha-on-snow-leopard.html (and it's not a double-deletion, it's trying to delete an object on the stack).
The root cause seems to be system headers not matching the libraries, and the fix is to rebuild with -D_GLIBCXX_FULLY_DYNAMIC_STRING.
Not quite. It's actually the debug variant of boost in MacPorts. This silently enables _GLIBCXX_DEBUG for the build, but which is also required in your own applications. More info in the ticket here: http://trac.macports.org/ticket/22112#comment:2