When running the executable under Rational Purify, it reports many FIM errors (Freeing Invalid Memory), and all of these are again due to the deletion of objects that were owned by a shared_ptr. Is your program (the code that uses shared_ptrs) running in multiple threads? I am seeing problems with my multithreaded code where the use_count in the shared_ptrs is not accurate and causing all sorts of problems. I'm even seeing core dump backtraces showing problems in the scoped_lock where the shared_ptr use_count is getting updated. It appears that there are a lot of restrictions on how shared_ptrs can be used in a multithreaded program, and I may be breaking some of those restrictions as it is easy to do so. In any case, let me know if you find a solution to your FIM errors. I have a feeling I'm seeing symptoms of the same problem.
Thanks.