From: Joel VanderWerf Date: 2003-01-18T10:43:32+09:00 Subject: fork and mutex The standard implementation of fork and mutex are incompatible. A thread which is alive (but not current) at fork time will be dead in the fork. That's fine, but if that thread holds a lock on a mutex, it will never give up the lock. This will cause the fork to die if its thread tries to lock the mutex. Also, there is a race condition in Mutex that can cause a thread to jump ahead of the queue of waiters, and cause the queue of waiters to be rotated. There is an example (of the former problem) and an implementation of mutex and fork which avoid both problems at: http://www.rubygarden.org/ruby?ForkableMutex