[#15359] Timeout::Error — Jeremy Thurgood <jerith@...>

Good day,

41 messages 2008/02/05
[#15366] Re: Timeout::Error — Eric Hodel <drbrain@...7.net> 2008/02/06

On Feb 5, 2008, at 06:20 AM, Jeremy Thurgood wrote:

[#15370] Re: Timeout::Error — Jeremy Thurgood <jerith@...> 2008/02/06

Eric Hodel wrote:

[#15373] Re: Timeout::Error — Nobuyoshi Nakada <nobu@...> 2008/02/06

Hi,

[#15374] Re: Timeout::Error — Jeremy Thurgood <jerith@...> 2008/02/06

Nobuyoshi Nakada wrote:

[#15412] Re: Timeout::Error — Nobuyoshi Nakada <nobu@...> 2008/02/07

Hi,

[#15413] Re: Timeout::Error — Jeremy Thurgood <jerith@...> 2008/02/07

Nobuyoshi Nakada wrote:

[#15414] Re: Timeout::Error — Nobuyoshi Nakada <nobu@...> 2008/02/07

Hi,

[#15360] reopen: can't change access mode from "w+" to "w"? — Sam Ruby <rubys@...>

I ran 'rake test' on test/spec [1], using

16 messages 2008/02/05
[#15369] Re: reopen: can't change access mode from "w+" to "w"? — Nobuyoshi Nakada <nobu@...> 2008/02/06

Hi,

[#15389] STDIN encoding differs from default source file encoding — Dave Thomas <dave@...>

This seems strange:

21 messages 2008/02/06
[#15392] Re: STDIN encoding differs from default source file encoding — Yukihiro Matsumoto <matz@...> 2008/02/06

Hi,

[#15481] very bad character performance on ruby1.9 — "Eric Mahurin" <eric.mahurin@...>

I'd like to bring up the issue of how characters are represented in

16 messages 2008/02/10

[#15528] Test::Unit maintainer — Kouhei Sutou <kou@...>

Hi Nathaniel, Ryan,

22 messages 2008/02/13

[#15551] Proc#curry — ts <decoux@...>

21 messages 2008/02/14
[#15557] Re: [1.9] Proc#curry — David Flanagan <david@...> 2008/02/15

ts wrote:

[#15558] Re: [1.9] Proc#curry — Yukihiro Matsumoto <matz@...> 2008/02/15

Hi,

[#15560] Re: Proc#curry — Trans <transfire@...> 2008/02/15

[#15585] Ruby M17N meeting summary — Martin Duerst <duerst@...>

This is a rough translation of the Japanese meeting summary

19 messages 2008/02/18

[#15596] possible bug in regexp lexing — Ryan Davis <ryand-ruby@...>

current:

17 messages 2008/02/19

[#15678] Re: [ANN] MacRuby — "Rick DeNatale" <rick.denatale@...>

On 2/27/08, Laurent Sansonetti <laurent.sansonetti@gmail.com> wrote:

18 messages 2008/02/28
[#15679] Re: [ANN] MacRuby — "Laurent Sansonetti" <laurent.sansonetti@...> 2008/02/28

On Thu, Feb 28, 2008 at 6:33 AM, Rick DeNatale <rick.denatale@gmail.com> wrote:

[#15680] Re: [ANN] MacRuby — Yukihiro Matsumoto <matz@...> 2008/02/28

Hi,

[#15683] Re: [ANN] MacRuby — "Laurent Sansonetti" <laurent.sansonetti@...> 2008/02/28

On Thu, Feb 28, 2008 at 1:51 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

Re: Timeout::Error

From: Charles Oliver Nutter <charles.nutter@...>
Date: 2008-02-06 21:30:55 UTC
List: ruby-core #15386
Jeremy Thurgood wrote:
> Jim Hranicky wrote:
>> Jeremy Thurgood wrote:
>>
>>>> No.  The exception would be rescued inappropriately then.
>>> At the moment it's being /not/ rescued inappropriately. Why should a 
>>> timeout exception (from within the standard libraries!) evade a naked 
>>> "rescue"? The current situation requires me to figure out everythign 
>>> that can possibly time out and add special-case error handling for 
>>> it. Worse than this, irb doesn't catch Timeout::Error and thus kills 
>>> my session (which typically has a bunch of state in it) whenever the 
>>> http server I'm talking to takes a while to respond.
>>
>> While I tend to agree and ran into the same frustration as you, you can
>> specify the type of exception Timeout throws like so:
>>
>>    timeout(5, StandardError) { ... }
>>
>> which seems to do what's desired,
>>
>>      ruby -rtimeout -e 'begin ; timeout(5, StandardError) { while 
>> true; sleep 1; end }; \
>>      rescue; puts "rescued" ; end'
> 
> Sure, if it's my code that's throwing the timeout. net/protocol.rb and 
> net/http.rb aren't mine and I'm hesitant to monkey-patch them to throw 
> different exceptions when I'm also using other libraries which use them.
> 
> A quick grep through /usr/lib/ruby/1.8 shows at least the following 
> files using timeout without specifying a different exception to use:

This is exactly why timeout is a bad idea. Being able to cause the 
calling thread to throw arbitrary exceptions means that all callers to 
all libraries run the risk of having exceptions bubble out they never 
expected. In this case, calling any of the net/* libraries requires the 
caller to also handle timeout errors.

timeout.rb should be abolished, and the net libraries rewritten to use 
select for IO. Other libraries that use timeout should use safer 
mechanisms that don't require the ability to arbitrarily interrupt a 
calling thread.

- Charlie

In This Thread