On 10/17/12 9:57 PM, Luc Bourhis wrote:

On Oct 18, 2012, at 11:21 AM, Jeffrey Van Voorst wrote:

Ok, let me look into this a bit tomorrow.   The issue is free() which gets an invalid address from a shared_ptr for root_data in iotbx_pdb when it is time for the whole pdb hierarchy to disappear. My main issue is I am not sure how to go about debugging shared_ptrs nor what architecture dependent flags or other voodoo (if any) is specified by -pthread.

Could you try adding -DBOOST_DISABLE_THREADS to compile your C++ program?

Luc

I could do that.  However, I would like to have just one copy of cctbx built, and be able to use the libiotbx_pdb.so library in both single and multithreaded code. The issue appears to me that the implementation of the boost smart_ptrs depends on defines set with respect to threads.  My assumption is: if I compile cctbx with -DBOOST_DISABLE_THREADS and link to the libraries from programs that were not compiled with that flag, I will run into issues of having differing implementations of smart_ptrs.

To follow up, I would need to try as you suggested.  However, for the purposes of my package it is easiest for me to compile cctbx once.  Therefore I need to compile cctbx without -DBOOST_DISABLE_THREADS and without -pthreads and see if I still run into the same problem.  Am I correct in inferring that the latest SVN version of cctbx will configure (by default) to not use -pthreads and not use -DBOOST_DISABLE_THREADS?

If you could point me to a good SCons tutorial or a good example script that has documentation, that would be very useful.

--Jeff