Issue #9150 has been updated by shugo (Shugo Maeda).


I've not investigated this problem yet, but Matz said implicit method calls should not honor refinements, so r42869 might be an undesirable change.
----------------------------------------
Bug #9150: Segfault in case statement execution, possibly related to refinements
https://bugs.ruby-lang.org/issues/9150#change-43205

Author: bradleybuda (Bradley Buda)
Status: Assigned
Priority: Normal
Assignee: nagachika (Tomoyuki Chikanaga)
Category: 
Target version: 
ruby -v: ruby 2.0.0p353 (2013-11-22 revision 43783) [x86_64-darwin13.0.0]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


This code consistently segfaults in 2.0.0p353:

require 'active_support/all'

case 3600
when 1.week then true
end

This is after `gem install activesupport --version=3.2.13`. The code works fine in 2.0.0p247.

I ran a git bisect between the two patches and I've narrowed it down to this change: https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/42869 . I don't know enough about ruby's internals to debug this any further, but according to LLDB the problem is a null pointer dereference in vm_eval.c:

 141  {
 142      VALUE ret;
 143
 144      if (!ci->me->def) return Qnil;
 145
 146      if (th->passed_block) {
 147          ci->blockptr = (rb_block_t *)th->passed_block;

ci->me is null on line 144.

I can reproduce this error on both OSX and Linux. Let me know if I can provide any more info to help debug this.


-- 
http://bugs.ruby-lang.org/