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.