On Thu, 18 Sep 2008, David Naylor wrote: > On Thursday 18 September 2008 18:23:22 you wrote: >> David Naylor wrote: >>> Hi, >>> >>> I have a program that spawns a lot of subprocesses (with pipes open) from >>> multiple threads. The problem is the program often deadlocks, but not >>> consistently. Sometimes the program can run over 5 times to competition >>> without incidence and yet othertimes it locks within a few seconds. >> >> you sent this to -current. Is it in -current? (we fixed something like >> this some months back in current and 7) > > -current cvsuped about Tuesday. > >> do your post-fork processes do an exec? according to the spec they >> should. > > Yes, they do. See the other replies... > >> if any of your threads other than the one that did the fork ho;ds any >> mutex at teh time of fork then your process will hang. If they hold a >> umtx (between processes) then everything will hang. > > Yes, the system does make use of mutexes. The forking thread never holds a > mutex but other threads could hold a mutex. This would explain the problem. > Is there any way to get around it (i.e. make sure no mutexes are held when a > fork is called?) You can hold mutexes while forking, you just can't rely on their state in any child process. There is also pthread_atfork(). -- DEReceived on Thu Sep 18 2008 - 19:14:43 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:35 UTC