From: Petr Salinger <Petr.Salinger@...> Date: 2011-08-30T15:08:49+09:00 Subject: [ruby-core:39194] [Ruby 1.9 - Bug #5240] Hang when using threads + forks on Debian GNU/kFreeBSD Issue #5240 has been updated by Petr Salinger. File rb-th.diff added File rb-main.diff added I looked at the change and in general should work even for our slightly broken pthread semantic on GNU/kFreeBSD. It should be possible to workaround it by encapsulating timer_thread_pipe_owner_proces usage, as shown in first attached diff. We need to put somewhere during initialization pthread_atfork(NULL, NULL, timer_thread_child_at_fork) Even on fully conforming pthread implementation might be GNU/kFreeBSD variant better, as getpid() might be costly system call. The problem is that place in main.c (as shown in 2nd diff) does not link. Please could you advice where to put this part of code. After that I would like to test it, whether it really works for us as expected. Please advice me. ---------------------------------------- Bug #5240: Hang when using threads + forks on Debian GNU/kFreeBSD http://redmine.ruby-lang.org/issues/5240 Author: Lucas Nussbaum Status: Feedback Priority: Normal Assignee: Category: Target version: 1.9.x ruby -v: 1.9.3 Hi, The following test script (derived from a test in bootstraptest/test_fork.rb) hangs very frequently on Debian GNU/kFreeBSD: <---- fork { } puts "after fork" t = Thread.start { fork{ } } puts "after fork in thread" t.join puts "after join" ---> Using git bisect, I determined that the commit introducing that regression is SVN revision 32244: - that revision hangs - 32243 does not hang This bug makes 1.9.3 unsuitable for being uploaded to Debian. So it would be great if it was fixed before the release. Also, there are other test failures that I'd like to analyze (but I can't because of that one), so I feel quite worried about this. -- http://redmine.ruby-lang.org