From: "none <" Date: 2009-07-28T12:18:20+09:00 Subject: [ruby-core:24583] Re: [Bug #1525] Deadlock in Ruby 1.9's VM caused by ConditionVariable.wait and fork? Hongli Lai wrote: > none < wrote: > >> Your test code was fine. The deadlock is not caused directly by your >> code but may be related to the timer thread which is created >> automatically (by ruby processor) after forking a process. And creating >> a native thread (Ruby1.8 was not native threaded, so it is ok.) is not >> async-signal-safe. So deadlock occurs. >> >> What I mean is that user should try to avoid the following code: >> fork do >> Thread.new do #Bad! Creating native threads is not safe. >> #some code >> end >> end >> > > In my test case, the forked child process does not create any new > threads at all, but still deadlocks. > I know. But Ruby processor fires a internel timer thread automatically. And that's the reason of deadlock. As I mentioned, right now, developer are trying to postpone the timer thread generation. I think your problem can be fix by this way. -Tetsu