Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Jun 2012 09:43:55 -0400
From:      "Steve Wills" <swills@mouf.net>
To:        "Stanislav Sedov" <stas@freebsd.org>
Cc:        Konstantin Belousov <kostikbel@gmail.com>, Steve Wills <swills@freebsd.org>, ports@freebsd.org, ruby@freebsd.org
Subject:   Re: Ruby 1.9 as default
Message-ID:  <def1973e5aaac34b7e3977ddc1427a6f.squirrel@mouf.net>
In-Reply-To: <07758721-BD54-4732-9B17-83D4CCCF55E0@freebsd.org>
References:  <4FC96D45.8080904@FreeBSD.org> <20120601193059.af9201da.stas@FreeBSD.org> <4FCD51E4.4030309@FreeBSD.org> <20120605085202.GI85127@deviant.kiev.zoral.com.ua> <07758721-BD54-4732-9B17-83D4CCCF55E0@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
>
> On Jun 5, 2012, at 1:52 AM, Konstantin Belousov wrote:
>
>> On Mon, Jun 04, 2012 at 08:25:08PM -0400, Steve Wills wrote:
>>> On 06/01/12 22:30, Stanislav Sedov wrote:
>>>>
>>>> I'm not sure it's a good idea.
>>>> Ruby 1.9 still has some nasty bugs on FreeBSD, related to the threads
>>>> and
>>>> fork.  That is fork in ruby 1.9 hangs sometimes...
>>>
>>> The ONLY thing I can find is this:
>>>
>>> http://bugs.ruby-lang.org/issues/2097
>>>
>>> which implies that it's fixed. If there's more to this issue than
>>> "broken on 7.3 and earlier", PLEASE let me know.
>>
>> If ruby indeed does what the bugs described, that is, calls non-async
>> signal safe functions from the threaded process after fork, then you
>> are guaranteed to get random hangs sometimes.
>
> Actually, the problem I'm trying to debug right now is more weird.
> When I run mono via system(3) from the ruby 1.9 process (I mean,
> exactly system(3), not via some ruby wrapper) twice, it hangs on some
> umtx the second time.  This works all the time.
>
> I'm still trying to track it down in mono, though it's not clear how
> this can happen at all.  Isn't execve(2) used by system(3) is supposed
> to clear everything (mutexes at least)?
>

Is this perhaps the -pthread issue I hit with perl? The issue is that if
you call (dlopen, exec, whatever) a threaded app from a non-threaded on,
it hangs due to the fact that libc takes shortcuts and doesn't initialize
thread related things in non-threaded apps. The solution is to build with
-pthread. (I may be describing the problem wrong, but the solution of
building with -pthread works.)

Perhaps we need to build ruby with -pthread?

Steve





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?def1973e5aaac34b7e3977ddc1427a6f.squirrel>