< :前の番号
^ :番号順リスト
> :次の番号
P :前の記事(スレッド移動)
N :次の記事(スレッド移動)
|<:前のスレッド
>|:次のスレッド
^ :返事先
_:自分への返事
>:同じ返事先を持つ記事(前)
<:同じ返事先を持つ記事(後)
---:分割してスレッド表示、再表示
| :分割して(縦)スレッド表示、再表示
~ :スレッドのフレーム消去
.:インデックス
..:インデックスのインデックス
Issue #3606 has been updated by Yui NARUSE.
Status changed from Open to Assigned
Assignee set to Motohiro KOSAKI
----------------------------------------
Bug #3606: Thread.stop and puts fail to work as documented.
http://redmine.ruby-lang.org/issues/3606
Author: Heesob Park
Status: Assigned
Priority: Normal
Assignee: Motohiro KOSAKI
Category: DOC
Target version: 1.9.x
ruby -v: ruby 1.9.3dev (2010-07-22 trunk 28707) [i686-linux]
=begin
I have tested following three codes which are the sample code in RDoc Documentation.
t1.rb
====================================================
a = Thread.new { puts "a"; Thread.stop; puts "c" }
Thread.pass
puts "Got here"
a.run
a.join
sleep 1
====================================================
t2.rb
====================================================
a = Thread.new { print "a"; Thread.stop; print "c" }
Thread.pass
print "b"
a.run
a.join
sleep 1
====================================================
t3.rb
====================================================
c = Thread.new { Thread.stop; puts "hey!" }
c.wakeup
sleep 1
====================================================
Expected output
t1.rb
a
Got here
c
t2.rb
abc
t3.rb
hey!
on Ruby 1.8.6
$ ruby -v
ruby 1.8.6 (2009-06-08 patchlevel 369) [i686-linux]
$ ruby -v t1.rb
a
Got here
c
$ ruby -v t2.rb
abc$ ruby -v t3.rb
hey!
$
Result
t1.rb ==> success
t2.rb ==> success
t3.rb ==> success
on Ruby 1.9.1
$ ruby -v
ruby 1.9.1p378 (2010-01-10 revision 26273) [i686-linux]
$ ruby t1.rb
aGot here
c
$ ruby t2.rb
$ ruby t3.rb
$
Result
t1.rb ==> fail
t2.rb ==> success
t3.rb ==> fail
On Ruby 1.9.3dev
duometis02@Duo02:~$ ruby -v
ruby 1.9.3dev (2010-07-22 trunk 28707) [i686-linux]
$ ruby t1.rb
Got herea
t1.rb:5:in `join': deadlock detected (fatal)
from t1.rb:5:in `<main>'
$ ruby t2.rb
bat2.rb:5:in `join': deadlock detected (fatal)
from t2.rb:5:in `<main>'
$ ruby t3.rb
$
Result
t1.rb ==> fail
t2.rb ==> fail
t3.rb ==> fail
Interesingly, the following code sometimes works and sometimes failed on Ruby 1.9.3.dev.
t4.rb
====================================================
c = Thread.new { Thread.stop; puts "hey!" }
puts "Hi!"
c.wakeup
sleep 1
====================================================
$ ruby -v
ruby 1.9.3dev (2010-07-22 trunk 28707) [i686-linux]
$ ruby t4.rb
Hi!
$ ruby t4.rb
Hi!
hey!
$ ruby t4.rb
Hi!
hey!
$ ruby t4.rb
Hi!
$
=end
--
http://redmine.ruby-lang.org