[fdo-internals] gcc mt_alloc related bugs?

Frank Warmerdam warmerdam at pobox.com
Fri Feb 16 03:26:35 EST 2007


I mentioned a couple days ago that I was still seeing crashes under
some circumstances after my 64bit fixes.  I have spent more hours than
I wish to contemplate digging into these crashes and have not come up
with a particular satisfying answer.

The crashes seemed to be related to corruption of the freelist
datastructures maintained by the mt_alloc allocator for stl vector
objects (ie. the XalanDOMString).

On Linux with glibc it seems you can define the environment variable
GLIBCXX_FORCE_NEW to force a new and delete to be done each time stl
container allocate or free memory, instead of using the mt_alloc pool
allocator.  This seems to avoid the problem.  I *thought* when running
in this mode I would finally be able to find the bug in the FDO code
using valgrind, but things run perfectly clean!

Based on a variety of googling, I am now suspecting that my Ubuntu
gcc 3.4 build is suffering from the problem described at:


So, if people are running into strange crashes, and tracebacks in
gcc show it being deep in the glibc mt_allocator while destroying
XalanDOMString's, I would suggest defining the GLIBCXX_FORCE_NEW
environment variable.  I results in a 20-30% speed reduction in
the FDO core unit tests, so there is a performance impact.  But things
run clean.

I *imagine* this is fixed in newer versions of Debian/Ubuntu.  I'm running
one generation behind (Ubuntu Breezy Badger).

God my head hurts.

PS. Google on mt_alloc and GLIBCXX_FORCE_NEW is educational for those
so inclined.  Mateusz - please read up on this so you can help me next time
I have this problem, and I've completely forgotten what I learned this time.


Now enjoying my FDO Core UnitTest results:

OK (102)

Best regards,
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | President OSGeo, http://osgeo.org

More information about the fdo-internals mailing list