Boost logo

Boost :

From: Jonathan Biggar (jon_at_[hidden])
Date: 2008-06-09 09:54:07

Sami Väisänen wrote:
>>> ../boost_1_34_1/libs/thread/src/condition.cpp:351:boost::detail::conditio
>>>>> 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?
>> 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

Boost list run by bdawes at, gregod at, cpdaniel at, john at