
Sami Väisänen wrote:
n_impl::~condition_impl(): Assertion `res == 0' That error indicates that the underlying condition variable couldn't be destroyed properly. Are you sure that your OS correctly clones condition variables when you do a fork?
../boost_1_34_1/libs/thread/src/condition.cpp:351:boost::detail::conditio pthreads (at least the version I have) requires mutexes to be re-initialized in the child process after a fork, as mentioned in the pthread_atfork man page. mmh, sounds like this would require me to track the mutexes in the parent process in order to be able to re-initialize them in the child process. I guess I must look for alternative ways for solving this problem. (ways that do not involve forking)
You should call _exit() in the child rather than exit(). That should avoid calling any of the usual exit cleanup code (including global destructors). This is generally good advice for whenever you fork() a child process--it should either call exec() or _exit() to avoid calling destructors and other cleanup code twice. -- Jon Biggar Floorboard Software jon@floorboard.com jon@biggar.org