From: "naruse (Yui NARUSE)" Date: 2012-06-14T10:26:54+09:00 Subject: [ruby-core:45636] [ruby-trunk - Bug #6575][Feedback] Thread#kill sets rb_errinfo() to Fixnum 8 after rb_protect(function, data, &error_tag) Issue #6575 has been updated by naruse (Yui NARUSE). Status changed from Open to Feedback nagachika (Tomoyuki Chikanaga) wrote: > Hi, > > Just for reference. r35622 could be related, or ticket #5993 seems related issue. > ibc-san, could you try to reproduce the problem on trunk? The correct fix of it is r35625. The commit message maybe helps your problem. ---------------------------------------- Bug #6575: Thread#kill sets rb_errinfo() to Fixnum 8 after rb_protect(function, data, &error_tag) https://bugs.ruby-lang.org/issues/6575#change-27233 Author: ibc (I��aki Baz Castillo) Status: Feedback Priority: Normal Assignee: Category: core Target version: 1.9.3 ruby -v: ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux] Using rb_protect() I've realized that when the thread is killed by other thread using Thread#kill, the error_tag passed to rb_protect() is set to 8 and rb_errinfo() returns Fixnum 8: ret = rb_protect(function, data, &error_tag); // While executing function() in Ruby land, our thread is // killed by Thread.kill. // If now I inspect rb_errinfo() it returns Fixnum 8, and // error_tag it's set to integer 8. Is it the expected behaviour? Wouldn't make more sense rb_errinfo() to return some kind of a new exception ThreadKilledException or whatever instead of Fixnum 8? -- http://bugs.ruby-lang.org/