Issue #12991 has been updated by Tomoyuki Chikanaga.
Backport changed from 2.1: REQUIRED, 2.2: DONE, 2.3: REQUIRED to 2.1: REQUIRED, 2.2: DONE, 2.3: DONE
ruby_2_3 r57568 merged revision(s) 56928.
----------------------------------------
Bug #12991: Documentation of Thread.abort_on_exception is wrong: it raises error again in main thread
https://bugs.ruby-lang.org/issues/12991#change-62901
* Author: Satoshi TAGOMORI
* Status: Closed
* Priority: Normal
* Assignee:
* Target version:
* ruby -v:
* Backport: 2.1: REQUIRED, 2.2: DONE, 2.3: DONE
----------------------------------------
Currently, ruby doc says that:
```
When set to true, all threads will abort (the process will exit(0)) if an exception is raised in any thread.
```
But actually, the error raised in thread (with abort_on_exception = true) will be re-raised in main thread.
If main thread is running in begin-rescue for that error, the process (and other threads) will NOT abort.
```ruby
sleeping = false
Thread.abort_on_exception = true
th = Thread.new do
sleep 0.1 until sleeping
raise "yay"
end
begin
sleeping = true
sleep 5
rescue => e
p(here: "rescue in main thread", error: e)
end
p "foo!"
```
This script shows "p" result and "foo!".
I think the document is misleading.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>