[#40917] テスト対象を 2 つ指定すると落ちる — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
きしもとです
[#40951] [Bug #3123] uninitialized constant Object::C (NameError) — Kazuhiro NISHIYAMA <redmine@...>
Bug #3123: uninitialized constant Object::C (NameError)
[#40959] [Bug #3136] reuse of singleton method definition causes SEGV — Yusuke Endoh <redmine@...>
Bug #3136: reuse of singleton method definition causes SEGV
[#40961] [Bug #3137] complex.rb changes exceptions of Math — Yusuke Endoh <redmine@...>
Bug #3137: complex.rb changes exceptions of Math
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
まつもと ゆきひろです
[#40973] [BUG: trunk]arm-linux向けクロスコンパイル時のエラー — Satoshi Shiba <shiba@...>
芝と申します.
[#41038] Windows と DL が使用条件の libffi — Aaron Patterson <aaron.patterson@...>
こんにちは!アーロンです。
こんにちは、なかむら(う)です。
成瀬です。
2010/4/21 NARUSE, Yui <naruse@airemix.jp>:
2010/4/26 Aaron Patterson <aaron.patterson@gmail.com>:
2010/4/26 Yugui <yugui@yugui.jp>:
Sorry for replying so late.
こんにちは、なかむら(う)です。
2010/5/5 U.Nakamura <usa@garbagecollect.jp>:
[#41054] [Bug #3198] O_APPEND for redirect fd is ignored on windows — _ wanabe <redmine@...>
Bug #3198: O_APPEND for redirect fd is ignored on windows
[#41061] why did #rationalize removed? — Yusuke ENDOH <mame@...>
ふなばさん
[#41067] [Feature #3203] LazySweepGC patch — Narihiro Nakamura <redmine@...>
Feature #3203: LazySweepGC patch
遠藤です。
成瀬です。
nariです。
nariです。
2010年5月28日5:15 Narihiro Nakamura <authornari@gmail.com>:
2010年5月29日18:28 Tanaka Akira <akr@fsij.org>:
[#41092] Re: [ruby-core:29863] [Bug #3216] #join in thwait.rb only waits for first thread — keiju@... (keiju ISHITSUKA)
けいじゅ@いしつかです.
なかだです。
[#41100] Re: [ruby-cvs:34762] Ruby:r27549 (trunk): * test/test_open3.rb (test_commandline): use dump instead of — Tanaka Akira <akr@...>
2010/4/29 <nobu@ruby-lang.org>:
[#41104] Rails3 M17N — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
xibbarこと藤岡です。
Yukihiro Matsumoto さんは書きました:
まつもと ゆきひろです
小川と言います。
[ruby-dev:41031] [Bug #3182] multi-irb may run parallelly
Bug #3182: multi-irb may run parallelly
http://redmine.ruby-lang.org/issues/show/3182
起票者: Yusuke Endoh
ステータス: Open, 優先度: Normal
担当者: Keiju Ishitsuka, カテゴリ: lib, Target version: 1.9.2
ruby -v: ruby 1.9.2dev (2010-04-21 trunk 27432) [i686-linux]
いしつかさん
遠藤です。
#3139 で、irb が SEGV するという報告が上がっています。
こんな感じで再現するらしいです。
irb String
irb Array
kill String
jobs
jobs
jobs #=> SEGV
私の環境で再現はしないのですが、同じ手順を実行すると、kill したあとで、
キー入力が不思議な挙動になりました。
irb(main):001:0> irb String
irb#1(String):001:0> irb Array
irb#2(Array):001:0> kill String
=> #<IRB::Irb: @context=#<IRB::Context:0x84096bc>, @signal_status=:IN_EVAL, @scanner=#<RubyLex:0x84080a0>>
irb(main):002:0> => [String]
irb#2(Array):002:0> j
NameError: undefined local variable or method `j' for main:Object
from (irb):2
from ../ruby-trunk-local/bin/irb:12:in `<main>'
irb(main):003:0> obs
NameError: undefined local variable or method `obs' for main:Object
from (irb):3
from ../ruby-trunk-local/bin/irb:12:in `<main>'
調べてみたところ、multi-irb で複数の irb のスレッドが同時に走り出して
いて、複数のスレッドから Readline.readline を呼ぶため入力の奪い合いに
なっているようです。
たぶん、これが報告者の環境では SEGV になったのではないかと予想します
(再現しないのでわからないですが) 。
SEGV はおいといて、複数の irb スレッドが走りだすのは multi-irb のバグ
だと思います。
irb が終了したときに、親の irb スレッドを run するコードがありますが、
kill された時は kill した irb スレッドがすでに走っているので、親を run
させるべきでないと思います。
以下のように、kill された irb 一覧を保持しておいて、kill された irb の
終了時には親を起こさないようにしたところ、不思議な挙動はなくなりました。
diff --git a/lib/irb/ext/multi-irb.rb b/lib/irb/ext/multi-irb.rb
index 7bb1a7c..df9c789 100644
--- a/lib/irb/ext/multi-irb.rb
+++ b/lib/irb/ext/multi-irb.rb
@@ -19,6 +19,7 @@ module IRB
def initialize
# @jobs = [[thread, irb],...]
@jobs = []
+ @killed_irbs = {}
@current_job = nil
end
@@ -64,6 +65,7 @@ module IRB
for key in keys
th, irb = search(key)
IRB.fail IrbAlreadyDead unless th.alive?
+ @killed_irbs[irb] = true
th.exit
end
end
@@ -104,6 +106,7 @@ module IRB
end
until assoc = @jobs.pop; end unless @jobs.empty?
@jobs.push assoc
+ @killed_irbs.delete(key)
end
def inspect
@@ -171,7 +174,7 @@ module IRB
#fail
ensure
unless system_exit
- @JobManager.delete(irb)
+ unless @JobManager.delete(irb)
if parent_thread.alive?
@JobManager.current_job = @JobManager.irb(parent_thread)
parent_thread.run
@@ -179,6 +182,7 @@ module IRB
@JobManager.current_job = @JobManager.main_irb
@JobManager.main_thread.run
end
+ end
end
end
end
--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
http://redmine.ruby-lang.org