Hi Jeffrey,
Does the --enable-boost-threads flag for cctbx_sources/libtbx/configure.py do anything drastic besides include -pthread in the compiling and linking steps?
Nope as Richard explained.
I am trying to understand why I would get a free() error (for the shared_ptr to root_data) under the following situation: *) the iotbx_pdb shared library is configured without the --enable-boost-threads flag (on a linux box) *) sometimes reproducible from a test C++ program that is linked using -pthread even in the case when the program is as simple as loading a pdb file and creating the hierarchy. *) gcc 4.4.5
As Richard pointed out, Boost.Thread support has been removed but from your 3 points, it's clear that the latest cctbx won't cure your problem. There is nothing in the iotbx that have ever relied on Boost.Thread as far as I know, even less on PThread, at least not explicitly. By that I mean that it could be that some hot functions of the standard library have been optimized for multiprocessor in gcc 4.4.5, although I very highly doubt it. Could you try to compile your C++ program with -g and then find from where the free() error creeps up? I would also run that program through valgrind for good measure. Best wishes, Luc