From: "Colin Fox"
Greetings, everyone.
I'm currently having some trouble with a heavily multithreaded app which uses objects shared between threads via smart pointers.
It's a multi-user application, where each user has a thread, and when one user sends a message to another (or broadcasts to all), a message object is created, and a smart pointer to that message is put into a queue for each thread.
I'm using pthread_mutex for locking the queues for each thread.
This program will sometimes work flawlessly for hours, and other times it will die within moments of starting. Pretty much every time it dies, it's because the message object has been freed while there are still smart pointers pointing to it.
I know that the recent version of the smart pointer library was supposed to have added thread-safety to it, but I'm wondering if anyone else is having similar troubles.
I'm using gcc 3.0.3 on Linux, and boost 1.27.
Can you simplify the program to the bare minimum that still has the problem? Also, does the CVS version of shared_ptr work? (It now uses a pthread_mutex on Linux and not atomic intructions.)