From: "shugo (Shugo Maeda)" Date: 2013-11-27T18:30:10+09:00 Subject: [ruby-core:58634] [ruby-trunk - Bug #9150] Segfault in case statement execution, possibly related to refinements 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/