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