[ruby-dev:36968] [Bug #688] test_exit_action(TestSignal)でTimeout::Error

View: New views
4 Messages — Rating Filter:   Alert me  

[ruby-dev:36968] [Bug #688] test_exit_action(TestSignal)でTimeout::Error

by Marc-Andre Lafortune-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Bug #688: test_exit_action(TestSignal)でTimeout::Error
http://redmine.ruby-lang.org/issues/show/688

起票者: Kazuhiro NISHIYAMA
ステータス: Open, 優先度: Normal

ruby 1.9.0 (2008-10-27 revision 19968) [powerpc-darwin9.5.0]

ruby 1.9.0 (2008-10-28 revision 19973) [x86_64-linux]
の環境でTimeout::Errorになります。

  4) Failure:
test_exit_action(TestSignal) [.../test/ruby/test_signal.rb:52]:
[ruby-dev:26128].
Exception raised:
<#<Timeout::Error: execution expired>>.


----------------------------------------
http://redmine.ruby-lang.org


[ruby-dev:37382] Re: [Bug #688] test_exit_action(TestSignal)でTimeout::Error

by Tanaka Akira-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

In article <490675c14107f_96877bf65e10bb@...>,
  Kazuhiro NISHIYAMA <redmine@...> writes:

> Bug #688: test_exit_action(TestSignal)でTimeout::Error
> http://redmine.ruby-lang.org/issues/show/688
>
> 起票者: Kazuhiro NISHIYAMA
> ステータス: Open, 優先度: Normal
>
> ruby 1.9.0 (2008-10-27 revision 19968) [powerpc-darwin9.5.0]
> や
> ruby 1.9.0 (2008-10-28 revision 19973) [x86_64-linux]
> の環境でTimeout::Errorになります。
>
>   4) Failure:
> test_exit_action(TestSignal) [.../test/ruby/test_signal.rb:52]:
> [ruby-dev:26128].
> Exception raised:
> <#<Timeout::Error: execution expired>>.

調べてみたんですが、sysread 中のシグナルに反応するかどうかが
スレッドの有無で変化します。

Thread.start { sleep 1000 } というスレッドがある場合、ハングする:

% ./ruby -ve '
r,w = IO.pipe
pid = fork {
  trap(:USR1, "EXIT")
  Thread.start { sleep 1000 }
  r.sysread(4096)
}
sleep 1
Process.kill(:USR1, pid)
Process.wait(pid)
'
ruby 1.9.1 (2008-12-11 revision 20617) [i686-linux]
ここでハング

Thread.start { sleep 1000 } というスレッドがない場合、EINTR になる:

% ./ruby -ve '
r,w = IO.pipe
pid = fork {
  trap(:USR1, "EXIT")
  #Thread.start { sleep 1000 }
  r.sysread(4096)
}
sleep 1
Process.kill(:USR1, pid)
Process.wait(pid)
'
ruby 1.9.1 (2008-12-11 revision 20617) [i686-linux]
-e:6:in `sysread': Interrupted system call (Errno::EINTR)
        from -e:6:in `block in <main>'
        from -e:3:in `fork'
        from -e:3:in `<main>'

1.8 では静かに終了します。
ハングもしないし、例外も出ません。
Thread.start { sleep 1000 } の有無にも依存しません。

% ruby-1.8 -ve '
r,w = IO.pipe
pid = fork {
  trap(:USR1, "EXIT")
  Thread.start { sleep 1000 }
  p r.sysread(4096)
}
sleep 1
Process.kill(:USR1, pid)
Process.wait(pid)
'
ruby 1.8.7 (2008-10-14 revision 17572) [i686-linux]
--
[田中 哲][たなか あきら][Tanaka Akira]


[ruby-dev:39523] [Bug #688](Feedback) test_exit_action(TestSignal)でTimeout::Error

by Marc-Andre Lafortune-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

チケット #688 が更新されました。 (by Yui NARUSE)

ステータス OpenからFeedbackに変更
ruby -v ruby 1.9.0 (2008-10-27 revision 19968) [powerpc-darwin9.5.0]にセット

これって今でも再現しますか?
----------------------------------------
http://redmine.ruby-lang.org/issues/show/688

----------------------------------------
http://redmine.ruby-lang.org


[ruby-dev:39525] [Bug #688](Closed) test_exit_action(TestSignal)でTimeout::Error

by Marc-Andre Lafortune-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

チケット #688 が更新されました。 (by Kazuhiro NISHIYAMA)

ステータス FeedbackからClosedに変更

chkbuild のログを確認すると
http://chkbuild.n-z.jp/ruby/ppc-mac-mini/ruby-trunk/log/20090714T034733.diff.txt.gz

-ruby 1.9.2dev (2009-07-13 trunk 24062) [powerpc-darwin9.6.0]
+ruby 1.9.2dev (2009-07-14 trunk 24096) [powerpc-darwin9.6.0]
の間での変更で直っているようなのでcloseします。
----------------------------------------
http://redmine.ruby-lang.org/issues/show/688

----------------------------------------
http://redmine.ruby-lang.org