[#28015] RCR: RUBY_VERSION_INT — Roger Pack <rogerdpack2@...>

Situation:

14 messages 2010/02/02

[#28113] [Bug #2723] $: length affects re-require time of already loaded files — Greg Hazel <redmine@...>

Bug #2723: $: length affects re-require time of already loaded files

16 messages 2010/02/08

[#28151] [Bug #2739] ruby 1.8.7 built with pthreads hangs under some circumstances — Joel Ebel <redmine@...>

Bug #2739: ruby 1.8.7 built with pthreads hangs under some circumstances

31 messages 2010/02/11

[#28188] [Bug #2750] build fails on win32/MinGW: "executable host ruby is required." even when --with-baseruby is used — Christian Bodt <redmine@...>

Bug #2750: build fails on win32/MinGW: "executable host ruby is required." even when --with-baseruby is used

9 messages 2010/02/16

[#28206] Is Math module a wrapper of libm? — Yusuke ENDOH <mame@...>

Hi matz --

23 messages 2010/02/18
[#28212] Re: Is Math module a wrapper of libm? — Yukihiro Matsumoto <matz@...> 2010/02/18

Hi,

[#28219] Re: Is Math module a wrapper of libm? — Yusuke ENDOH <mame@...> 2010/02/18

Hi,

[#28225] Re: Is Math module a wrapper of libm? — Marc-Andre Lafortune <ruby-core-mailing-list@...> 2010/02/18

Hi,

[#28233] Re: Is Math module a wrapper of libm? — Kenta Murata <muraken@...> 2010/02/18

Hi,

[#28265] Re: Is Math module a wrapper of libm? — Marc-Andre Lafortune <ruby-core-mailing-list@...> 2010/02/20

Hi,

[#28286] Re: Is Math module a wrapper of libm? — Kenta Murata <muraken@...> 2010/02/21

Hi

[#28291] Re: Is Math module a wrapper of libm? — Marc-Andre Lafortune <ruby-core-mailing-list@...> 2010/02/22

Hi!

[#28235] [Feature #2759] Regexp /g and /G options — Michael Fellinger <redmine@...>

Feature #2759: Regexp /g and /G options

35 messages 2010/02/18

[#28329] [ANN] Ruby 1.9.2dev has passed RubySpec! — Yusuke ENDOH <mame@...>

Hi,

12 messages 2010/02/24

[#28355] [ANN] Toward rich diversity of Ruby development. — Urabe Shyouhei <shyouhei@...>

A short announcement: thanks to some helps of GitHub people, I now have

12 messages 2010/02/27

[#28365] Indentifying key MRI-on-Windows issues — Jon <jon.forums@...>

In an effort to begin summarizing key MRI-on-Windows open issues I'm starting this thread in hopes that those interested will respond with details on the key MRI issues they feel need resolution for Windows users.

11 messages 2010/02/27
[#28690] Re: Indentifying key MRI-on-Windows issues — Roger Pack <rogerdpack2@...> 2010/03/16

> My key concern is http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-=

[ruby-core:28380] [Bug #2828] Timeout doesn't work as expected if ruby process blocks

From: Florian Eitel <redmine@...>
Date: 2010-02-28 23:52:24 UTC
List: ruby-core #28380
Bug #2828: Timeout doesn't work as expected if ruby process blocks
http://redmine.ruby-lang.org/issues/show/2828

Author: Florian Eitel
Status: Open, Priority: Normal
ruby -v: ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]

> TCPSocket.new "fireflyseason2.com", "echo"

Blocks ruby process for a while because the domain is not available. If you would try to surround it with an timeout Block (timeout.rb) this will not work because of blocking:

> timeout(timeout) do TCPSocket.new("fireflyseason2.com", "echo") end

But pingecho(..) in ping.rb is trying exactly this behavior. Is this a Bug or OS specific behavior?

The complete blocking of all threads in combination with timeout can result strange errors:

> timeout(5) do TCPSocket.new("fireflyseason2.com", "echo").close end

This should raise a "Timeout::Error: execution expired" exception. (in result of blocking of course not after 5 sec but some time later...). But sometimes a strange "#<Class:0xb7c7a2ec>: execution expired" exception is thrown. In my opinion there is a race condition between two exception.

TCPSocket.new blocks ruby process and blocks all threads. The thread which should throw an exception after timeout is blocked as well. After TCPSocket ends blocking everything is running again. TCPSocket raises an exception because open is failed. At the same time the timeout thread is raised an exception as well (see timeout.rb:60). This should catched in timeout:64 but I think the exception of TCPSocket came first and passed already the rescue/ensure block. As an result the timeout exception is not caught in timeout method and the caller receives it.

I'm not completely sure about this but in my opinion this is the only possibility which lead into this strange error. The error happens not every time. It depends of course on network setup (if TCPSocket is used for blocking) and perhaps some other factors.

For complete example please look at http://gist.github.com/312336


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

In This Thread

Prev Next