Bug #9150
closedSegfault in case statement execution, possibly related to refinements
Description
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.