Re: ruby18, -pthreads, deep recursion

2007-11-05 Thread lemon
Marcin Wisnicki wrote:
> On Thu, 01 Nov 2007 22:02:38 -0500, Josh Paetzel wrote:
>> On Thursday 01 November 2007 04:04:35 pm lemon wrote:
>>> [0] http://lists.freebsd.org/pipermail/freebsd-ports/2005-
> January/019352.html
>>> http://lists.freebsd.org/pipermail/freebsd-ports/2006-
> March/030691.html
>> If it's any consolation, I've emailed the ruby maintainer a few times
>> about why disabling threads in the port's menu doesn't *really* disable
>> threads and have never gotten a reply.
> 
> As explained in abovementioned links, some of ruby extensions need 
> pthreads but since shared modules on freebsd are never linked with 
> threading libraries (i think it might no longer be true in releng7/
> current), you have no other choice than to link ruby interpreter binary 
> with libpthread.

Thanks, that's much clearer for me now. I guess I'm lucky - I've yet to
hit anything involved in our RoR app that breaks a pthread-less ruby18
on 6.2-R. Even better if the problem's gone away on 7.x.

Cheers for all the responses.

Regards, l.
___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: ruby18, -pthreads, deep recursion

2007-11-02 Thread Jeremy Messenger

On Fri, 02 Nov 2007 18:30:13 -0500, Jeremy Messenger <[EMAIL PROTECTED]> wrote:

On Fri, 02 Nov 2007 11:37:07 -0500, Marcin Wisnicki  
<[EMAIL PROTECTED]> wrote:



On Thu, 01 Nov 2007 22:02:38 -0500, Josh Paetzel wrote:

On Thursday 01 November 2007 04:04:35 pm lemon wrote:

[0] http://lists.freebsd.org/pipermail/freebsd-ports/2005-

January/019352.html

http://lists.freebsd.org/pipermail/freebsd-ports/2006-

March/030691.html



If it's any consolation, I've emailed the ruby maintainer a few times
about why disabling threads in the port's menu doesn't *really* disable
threads and have never gotten a reply.


As explained in abovementioned links, some of ruby extensions need
pthreads but since shared modules on freebsd are never linked with
threading libraries (i think it might no longer be true in releng7/
current), you have no other choice than to link ruby interpreter binary
with libpthread.


I must be behind with -pthread stuff for FreeBSD 7.x/-CURRENT. If it's  
doesn't need -pthread any longer, then it's awsome. We can add a new  
check of if system is below than 7.x then force add -pthread in ruby  
port. It will need a lot of test first before maintainer or someone to  
commit this change. I don't mind to test on ruby-gtk2/ruby-gnome2 in  
RELENG_7 by remove -pthread from ruby port.


Yep, ruby-gtk2/ruby-gnome2 work great with ruby compiled without -pthread  
on RELENG_7. Nice! My suggest of add a new check should make everybody  
more happy.


% ldd /usr/local/bin/ruby
/usr/local/bin/ruby:
libruby18.so.18 => /usr/local/lib/libruby18.so.18 (0x2807d000)
libcrypt.so.4 => /lib/libcrypt.so.4 (0x28154000)
libm.so.5 => /lib/libm.so.5 (0x2816d000)
libc.so.7 => /lib/libc.so.7 (0x28182000)

% ruby /usr/local/share/examples/ruby18/gtk2/misc/filechooser.rb
[...no crash...]
% ruby /usr/local/share/examples/ruby18/gtk2/misc/fileselection.rb
[...no crash...]

Cheers,
Mezz


Cheers,
Mezz



--
[EMAIL PROTECTED]  -  [EMAIL PROTECTED]
FreeBSD GNOME Team  -  FreeBSD Multimedia Hat (ports, not src)
http://www.FreeBSD.org/gnome/  -  [EMAIL PROTECTED]
http://wiki.freebsd.org/multimedia  -  [EMAIL PROTECTED]
___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: ruby18, -pthreads, deep recursion

2007-11-02 Thread Jeremy Messenger
On Fri, 02 Nov 2007 11:37:07 -0500, Marcin Wisnicki  
<[EMAIL PROTECTED]> wrote:



On Thu, 01 Nov 2007 22:02:38 -0500, Josh Paetzel wrote:

On Thursday 01 November 2007 04:04:35 pm lemon wrote:

[0] http://lists.freebsd.org/pipermail/freebsd-ports/2005-

January/019352.html

http://lists.freebsd.org/pipermail/freebsd-ports/2006-

March/030691.html



If it's any consolation, I've emailed the ruby maintainer a few times
about why disabling threads in the port's menu doesn't *really* disable
threads and have never gotten a reply.


As explained in abovementioned links, some of ruby extensions need
pthreads but since shared modules on freebsd are never linked with
threading libraries (i think it might no longer be true in releng7/
current), you have no other choice than to link ruby interpreter binary
with libpthread.


I must be behind with -pthread stuff for FreeBSD 7.x/-CURRENT. If it's  
doesn't need -pthread any longer, then it's awsome. We can add a new check  
of if system is below than 7.x then force add -pthread in ruby port. It  
will need a lot of test first before maintainer or someone to commit this  
change. I don't mind to test on ruby-gtk2/ruby-gnome2 in RELENG_7 by  
remove -pthread from ruby port.


Cheers,
Mezz


--
[EMAIL PROTECTED]  -  [EMAIL PROTECTED]
FreeBSD GNOME Team  -  FreeBSD Multimedia Hat (ports, not src)
http://www.FreeBSD.org/gnome/  -  [EMAIL PROTECTED]
http://wiki.freebsd.org/multimedia  -  [EMAIL PROTECTED]
___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: ruby18, -pthreads, deep recursion

2007-11-02 Thread Marcin Wisnicki
On Thu, 01 Nov 2007 22:02:38 -0500, Josh Paetzel wrote:
> On Thursday 01 November 2007 04:04:35 pm lemon wrote:
>> [0] http://lists.freebsd.org/pipermail/freebsd-ports/2005-
January/019352.html
>> http://lists.freebsd.org/pipermail/freebsd-ports/2006-
March/030691.html
>>
> If it's any consolation, I've emailed the ruby maintainer a few times
> about why disabling threads in the port's menu doesn't *really* disable
> threads and have never gotten a reply.

As explained in abovementioned links, some of ruby extensions need 
pthreads but since shared modules on freebsd are never linked with 
threading libraries (i think it might no longer be true in releng7/
current), you have no other choice than to link ruby interpreter binary 
with libpthread.

___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: ruby18, -pthreads, deep recursion

2007-11-02 Thread Josh Paetzel
On Thursday 01 November 2007 04:04:35 pm lemon wrote:
> Hi,
>
> I've been struggling with FreeBSD's ruby18 port and threads. I realise
> there's previous discussion[0] about this and I feel I'm blundering
> somewhat, but here goes.
>
> On both 7.x and 6.x boxes I've built ruby18 with the pthreads knob
> deliberately turned off (the default). The resultant ruby has problems
> with deep recursion, shown by this script[1] but less pathologically in
> production in a busy RoR site too.
>
>   $ ruby -e 'def d(x); p x; d x+1; end; d 0'
>
> This bombs with SIGILL[2].
>
> I note that, as per the conversations linked above, this build uses the
> GCC option -pthread and links against libthr[3].
>
> If I build the port without -pthread (and related config.h #define),
> install the library alongside the from-port one, and employ the
> resultant binary with some libmap.conf guidance I get a ruby which
> behaves far nicer[4]. I can recurse way deeper and receive a graceful
> SystemStackError exception when things hit the wall[5].
>
> What's the score here? Clearly there's motive for building like it does,
> but the hacked ruby works better for me in everyday life. Any ideas?
>
> I hope this is on-topic for freebsd-ports. I mailed the maintainer first
> but got no response.
>
> Regards, l.
>
> [0]
> http://lists.freebsd.org/pipermail/freebsd-ports/2005-January/019352.html
> http://lists.freebsd.org/pipermail/freebsd-ports/2006-March/030691.html
>
> [1] Google found me this, I forget where!
>
> [2] $ ruby -e 'def d(x); p x; d x+1; end; d 0' | head
>   0
>   1
>   2
> ...
> 2138
> 2139
> Illegal instruction: 4
>
> [3] $ ldd `which ruby`
>   /usr/local/bin/ruby:
>   libruby18.so.18 => /usr/local/lib/libruby18.so.18 (0x2807d000)
>   libcrypt.so.4 => /lib/libcrypt.so.4 (0x28154000)
>   libm.so.5 => /lib/libm.so.5 (0x2816d000)
>   libthr.so.3 => /lib/libthr.so.3 (0x28182000)
>   libc.so.7 => /lib/libc.so.7 (0x28195000)
>
> [4] $ ldd ~/tmp/ruby18
>   /home/lemon/tmp/ruby18:
>   libruby18.so.18 => /usr/local/lib/libruby18-nothread.so.18
> (0x2807d000)
>   libcrypt.so.4 => /lib/libcrypt.so.4 (0x28154000)
>   libm.so.5 => /lib/libm.so.5 (0x2816d000)
>   libc.so.7 => /lib/libc.so.7 (0x28182000)
>
> [5] $ ~/tmp/ruby18 -e 'def d(x); p x; d x+1; end; d 0'
>   0
>   1
>   2
>   ...
>   67705
>   67706
>   -e:1:in `inspect': stack level too deep (SystemStackError)
>   from -e:1:in `p'
>   from -e:1:in `d'
>   from -e:1:in `d'
>   from -e:1

If it's any consolation, I've emailed the ruby maintainer a few times about 
why disabling threads in the port's menu doesn't *really* disable threads and 
have never gotten a reply.

In my case though the damage from the 'sort of threaded' ruby that the port 
builds with the threads option turned off is far more insiduous.

-- 
Thanks,

Josh Paetzel

PGP: 8A48 EF36 5E9F 4EDA 5A8C 11B4 26F9 01F1 27AF AECB


signature.asc
Description: This is a digitally signed message part.


Re: ruby18, -pthreads, deep recursion

2007-11-01 Thread Jeremy Messenger

On Thu, 01 Nov 2007 16:04:35 -0500, lemon <[EMAIL PROTECTED]> wrote:


Hi,

I've been struggling with FreeBSD's ruby18 port and threads. I realise
there's previous discussion[0] about this and I feel I'm blundering
somewhat, but here goes.

On both 7.x and 6.x boxes I've built ruby18 with the pthreads knob
deliberately turned off (the default). The resultant ruby has problems
with deep recursion, shown by this script[1] but less pathologically in
production in a busy RoR site too.

  $ ruby -e 'def d(x); p x; d x+1; end; d 0'

This bombs with SIGILL[2].

I note that, as per the conversations linked above, this build uses the
GCC option -pthread and links against libthr[3].

If I build the port without -pthread (and related config.h #define),
install the library alongside the from-port one, and employ the
resultant binary with some libmap.conf guidance I get a ruby which
behaves far nicer[4]. I can recurse way deeper and receive a graceful
SystemStackError exception when things hit the wall[5].

What's the score here? Clearly there's motive for building like it does,
but the hacked ruby works better for me in everyday life. Any ideas?

I hope this is on-topic for freebsd-ports. I mailed the maintainer first
but got no response.


People did a lot of test for lofi and me. You can see  
http://freebsd.rambler.ru/bsdmail/cvs-all_2005/msg08680.html ... Have ruby  
compiles without -pthread breaks more stuff than with -pthread. But we  
can't enable thread option because it also break more stuff than disable  
thread support. Weird?


As for your problem of ruby with -pthread. I have known about that problem  
and there used to have a PR of it, but I can't find that PR. It was only a  
problem that ruby with -pthread is causing.


I am not going to work on ruby all over again, so don't ask me. :-) I am  
hoping that someone can bring 100% solution, but we haven't get Mr. Right  
for ruby yet. Maybe Ruby 1.9 or 2.x with new VM/thread will solve this  
problem or not.


Cheers,
Mezz


Regards, l.




--
[EMAIL PROTECTED]  -  [EMAIL PROTECTED]
FreeBSD GNOME Team  -  FreeBSD Multimedia Hat (ports, not src)
http://www.FreeBSD.org/gnome/  -  [EMAIL PROTECTED]
http://wiki.freebsd.org/multimedia  -  [EMAIL PROTECTED]
___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


ruby18, -pthreads, deep recursion

2007-11-01 Thread lemon
Hi,

I've been struggling with FreeBSD's ruby18 port and threads. I realise
there's previous discussion[0] about this and I feel I'm blundering
somewhat, but here goes.

On both 7.x and 6.x boxes I've built ruby18 with the pthreads knob
deliberately turned off (the default). The resultant ruby has problems
with deep recursion, shown by this script[1] but less pathologically in
production in a busy RoR site too.

  $ ruby -e 'def d(x); p x; d x+1; end; d 0'

This bombs with SIGILL[2].

I note that, as per the conversations linked above, this build uses the
GCC option -pthread and links against libthr[3].

If I build the port without -pthread (and related config.h #define),
install the library alongside the from-port one, and employ the
resultant binary with some libmap.conf guidance I get a ruby which
behaves far nicer[4]. I can recurse way deeper and receive a graceful
SystemStackError exception when things hit the wall[5].

What's the score here? Clearly there's motive for building like it does,
but the hacked ruby works better for me in everyday life. Any ideas?

I hope this is on-topic for freebsd-ports. I mailed the maintainer first
but got no response.

Regards, l.

[0]
http://lists.freebsd.org/pipermail/freebsd-ports/2005-January/019352.html
http://lists.freebsd.org/pipermail/freebsd-ports/2006-March/030691.html

[1] Google found me this, I forget where!

[2] $ ruby -e 'def d(x); p x; d x+1; end; d 0' | head
0
1
2
...
2138
2139
Illegal instruction: 4

[3] $ ldd `which ruby`
/usr/local/bin/ruby:
libruby18.so.18 => /usr/local/lib/libruby18.so.18 (0x2807d000)
libcrypt.so.4 => /lib/libcrypt.so.4 (0x28154000)
libm.so.5 => /lib/libm.so.5 (0x2816d000)
libthr.so.3 => /lib/libthr.so.3 (0x28182000)
libc.so.7 => /lib/libc.so.7 (0x28195000)

[4] $ ldd ~/tmp/ruby18
/home/lemon/tmp/ruby18:
libruby18.so.18 => /usr/local/lib/libruby18-nothread.so.18
(0x2807d000)
libcrypt.so.4 => /lib/libcrypt.so.4 (0x28154000)
libm.so.5 => /lib/libm.so.5 (0x2816d000)
libc.so.7 => /lib/libc.so.7 (0x28182000)

[5] $ ~/tmp/ruby18 -e 'def d(x); p x; d x+1; end; d 0'
0
1
2
...
67705
67706
-e:1:in `inspect': stack level too deep (SystemStackError)
from -e:1:in `p'
from -e:1:in `d'
from -e:1:in `d'
from -e:1
___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "[EMAIL PROTECTED]"