Forum: Ruby system is silently coming out in error with thread.join

Posted by Prog Rammer (proggrammer)
on 2012-12-03 15:18
There are two rb files:

run_work.rb
----------
#some code here
children=[]
str="ruby work.rb"
children<<Thread.new
  system(str)
end
children.each do |c|
  c.join
end
puts 'third'
#some code here


work.rb
------
children=[]
children<<Thread.new
  #some code here
end
puts 'first'
children.each do |c|
  c.join                 ############## 'alpha'
  puts 'DONE!'
end
puts 'second'

==============================================
If I run run_work.rb, I see output as:
first
third

Where did 'second go'?
So On rubymines I kept one breakpoint at 'alpha'. It doesnt come out of
that join statement and so never print 'DONE!', so again I re-run and
when the control is at alpha (alpha statement is yet to be executed), I
entered c.join in 'watches'-list of debug on rubymines:
it gives:
Couldn't evaluate: t.joinUnable to read information in the specified
timeout[10s].
Posted by Robert Klemme (robert_k78)
on 2012-12-03 15:38
(Received via mailing list)
On Mon, Dec 3, 2012 at 3:18 PM, Prog Rammer <lists@ruby-forum.com> 
wrote:
> children.each do |c|
>   #some code here
> first
> third
>
> Where did 'second go'?

I'd say this is your problem:

$ ruby -e Thread.new
-e:1:in `initialize': must be called with a block (ThreadError)
        from -e:1:in `new'
        from -e:1:in `<main>'


Cheers

robert
Posted by 7stud -- (7stud)
on 2012-12-03 19:45
...
Posted by Prog Rammer (proggrammer)
on 2012-12-04 07:29
> $ ruby -e Thread.new
> -e:1:in `initialize': must be called with a block (ThreadError)
>         from -e:1:in `new'
>         from -e:1:in `<main>'
>
>
> Cheers
>
> robert

I dont get a fix yet.. :(
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.