|
Boost : |
From: Sami Väisänen (sami.vaisanen_at_[hidden])
Date: 2008-06-09 10:08:01
Jonathan Biggar wrote:
> 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.
>
>
This appears to work. Thank you.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk