
On 08/15/2010 05:34 PM, Boris Schaeling wrote:
On Sun, 15 Aug 2010 17:23:42 +0200, Roland Bock <rbock@eudoxos.de> wrote:
[...]Can you give me a hint what the problem was with multi-threading in previous versions?
See <http://www.opengroup.org/onlinepubs/000095399/functions/fork.html>:
"A process shall be created with a single thread. If a multi-threaded process calls fork(), the new process shall contain a replica of the calling thread and its entire address space, possibly including the states of mutexes and other resources. Consequently, to avoid errors, the child process may only execute async-signal-safe operations until such time as one of the exec functions is called."
All previous versions of Boost.Process had called non-async-signal-safe functions between fork() and exec().
Thanks! Phew! Our child code just uses close and dup2 between fork and exec. Should be ok then, but this is the kind of stuff that makes me eager to see Boost.Progress reviewed and included :-)