From: moio@... Date: 2019-06-05T04:57:01+00:00 Subject: [ruby-core:92971] [Ruby trunk Bug#15886] return in rescue block breaks Timeout.timeout Issue #15886 has been updated by moio (Silvio Moioli). I like this proposed wording, thanks for taking care of this! ---------------------------------------- Bug #15886: return in rescue block breaks Timeout.timeout https://bugs.ruby-lang.org/issues/15886#change-78349 * Author: moio (Silvio Moioli) * Status: Rejected * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu] * Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- Passing `Timeout.timeout` a block with a rescue clause that contains a return statement prevents `Timeout::Error` to be raised as expected. Reproducer: ``` ruby require 'timeout' begin Timeout.timeout(1) do begin sleep 10 ensure puts "ensure block executed" ## commenting line below restores expected behaviour return true end end rescue Timeout::Error => e puts "EXPECTED BEHAVIOUR: timeout error rescued" end ``` Expected output: ``` ensure block executed EXPECTED BEHAVIOR: timeout error rescued ``` Actual output: ``` ensure block executed ``` Looking in Redmine the following two issues appear related (but I lack the insight to tell for sure): - https://bugs.ruby-lang.org/issues/14859 - https://bugs.ruby-lang.org/issues/7503 I apologize in advance if this issue is a duplicate. -- https://bugs.ruby-lang.org/ Unsubscribe: