summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2021-04-08 07:53:06 -0700
committerJeremy Evans <code@jeremyevans.net>2021-04-08 07:53:06 -0700
commit5c4ff3f00c6bd84ef0721c1077ee9c525daa68f8 (patch)
tree48be9021d21b53227fb8ff6b026cadbfaf96349d
parent0395aa6bbb23c2a4c92fbbec87803a9670174d2c (diff)
Document how to handle kill/terminate interrupts in Thread.handle_interrupt
The kill/terminate interrupts are internally handled not as Exception instances, but as integers. So using Exception doesn't handle these interrupts, but Object does. You can use Integer if you only want to handle kill/terminate interrupts, but that's probably more of an implementation detail, while handling Object should work regardless of the implementation. Fixes [Bug #15735]
-rw-r--r--thread.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/thread.c b/thread.c
index 2f5e279e52..4f2debdaf2 100644
--- a/thread.c
+++ b/thread.c
@@ -2223,6 +2223,8 @@ handle_interrupt_arg_check_i(VALUE key, VALUE val, VALUE args)
* # all exceptions inherited from Exception are prohibited.
* }
*
+ * For handling all interrupts, use +Object+ and not +Exception+
+ * as the ExceptionClass, as kill/terminate interrupts are not handled by +Exception+.
*/
static VALUE
rb_thread_s_handle_interrupt(VALUE self, VALUE mask_arg)