I just upraded to Ruby 1.8.3 (from sources) on my Redhat Linux box.
When I attempt to do anything that starts a new thread, I receive the
message "ThreadError: uninitialized thread - check
`Thread#initialize'". Below is a transcript from a one-line session in
IRB that demonstrates the problem. Any ideas? (Please let me know if
there is other information that would be helpful in diagnosing this.)
irb(main):001:0> Thread.new { puts 'hi' }
ThreadError: uninitialized thread - check `Thread#initialize'
from (irb):1:in `new'
from (irb):1
irb(main):002:0>
I just upraded to Ruby 1.8.3 (from sources) on my Redhat Linux box.
When I attempt to do anything that starts a new thread, I receive the
message "ThreadError: uninitialized thread - check
`Thread#initialize'". Below is a transcript from a one-line session in
IRB that demonstrates the problem. Any ideas? (Please let me know if
there is other information that would be helpful in diagnosing this.)
irb(main):001:0> Thread.new { puts 'hi' }
ThreadError: uninitialized thread - check `Thread#initialize'
from (irb):1:in `new'
from (irb):1
irb(main):002:0>
--
ara [dot] t [dot] howard [at] gmail [dot] com
all happiness comes from the desire for others to be happy. all misery
comes from the desire for oneself to be happy.
-- bodhicaryavatara
I just upraded to Ruby 1.8.3 (from sources) on my Redhat Linux box.
When I attempt to do anything that starts a new thread, I receive the
message "ThreadError: uninitialized thread - check
`Thread#initialize'". Below is a transcript from a one-line session
in IRB that demonstrates the problem. Any ideas? (Please let me
know if there is other information that would be helpful in
diagnosing this.)
irb(main):001:0> Thread.new { puts 'hi' }
ThreadError: uninitialized thread - check `Thread#initialize'
from (irb):1:in `new'
from (irb):1
irb(main):002:0>
The ruby executable links against libruby18.so. If you downloaded and
installed ruby into /usr/local or something like that, perhaps at runtime
your new ruby binary is still linking against the older ruby library. A
quick use of 'ldd' will help determine that.
Caleb
···
On Monday 21 November 2005 03:32 pm, Eric K wrote:
I just upraded to Ruby 1.8.3 (from sources) on my Redhat Linux box.
When I attempt to do anything that starts a new thread, I receive the
message "ThreadError: uninitialized thread - check
`Thread#initialize'". Below is a transcript from a one-line session in
IRB that demonstrates the problem. Any ideas? (Please let me know if
there is other information that would be helpful in diagnosing this.)
I installed Ruby 1.8.3 from source using (I believe) the standard
"compile/make/make install" cycle. (It's been a week or so, so the
memory's a bit weak). Might there have been special switches I'd have
needed for Redhat Enterprise Server 3?
Caleb >> perhaps at runtime your new ruby binary is still linking
against
Caleb >> the older ruby library. A quick use of 'ldd' will help
determine that.
Here's the output from 'ldd' of /usr/local/bin/ruby:
Looks okay to me. My binary also links against /usr/lib/libruby18.so, but
it looks like yours is statically built in.
Does your test program fail in the same way if you don't use irb, but
instead just run it through ruby? Have you tried running any of the test
programs that came bundled in the ruby .tar.gz (in the test subdirectory,
I believe) ?
Thank you for your help on this. I believe I have resolved the issue.
On my particular Linux (Redhat Enterprise 3), I have to modify the
CFLAGS setting in the Makefile after running ./configure (but before
running make, make install).
After changing the CFLAGS line from:
CFLAGS = -g -O2
to:
CFLAGS = -g -O0
I am able to build Ruby that handles Threads properly. I think the
reason some things were working (and some not) was that I had some .o
files hanging around from a previous build (one done without the CFLAGS
change).