Issue #11071 has been updated by Nobuyoshi Nakada.


Possibly shortest code.

~~~ruby
def doit
  yield nil
end

doit(&proc {doit {}}.method(:call))
~~~

But it doesn't happen, if the inner block has a single argument or arbitrary number arguments `*`.
Oppositely, it's similar but `sp` is less than `bp` when the arguments are more than one.
And it seems the point to reenter the same method `doit`.


----------------------------------------
Bug #11071: Stack consistency error while using RSpec and Timecop
https://bugs.ruby-lang.org/issues/11071#change-52357

* Author: James Coglan
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
* Backport: 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED
----------------------------------------
I have this Gemfile:

```ruby
source 'https://rubygems.org'

ruby '2.2.2'

gem 'rspec'
gem 'timecop'
```

producing this Gemfile.lock:

```
GEM
  remote: https://rubygems.org/
  specs:
    diff-lcs (1.2.5)
    rspec (3.2.0)
      rspec-core (~> 3.2.0)
      rspec-expectations (~> 3.2.0)
      rspec-mocks (~> 3.2.0)
    rspec-core (3.2.3)
      rspec-support (~> 3.2.0)
    rspec-expectations (3.2.1)
      diff-lcs (>= 1.2.0, < 2.0)
      rspec-support (~> 3.2.0)
    rspec-mocks (3.2.1)
      diff-lcs (>= 1.2.0, < 2.0)
      rspec-support (~> 3.2.0)
    rspec-support (3.2.2)
    timecop (0.7.3)

PLATFORMS
  ruby

DEPENDENCIES
  rspec
  timecop
```

and this test file:

```ruby
# timecop_spec.rb

require 'timecop'

describe Timecop do
  around do |example|
    Timecop.travel(Time.parse('2015-01-01 06:30:00'), &example)
  end

  it 'sets the current time' do
    Timecop.travel(Time.parse('2015-01-01 09:30:00')) {}
  end
end
```

When I run `bundle exec rspec -c timecop_spec.rb`, this is the output:

```
/home/jcoglan/projects/futurelearn/timecop-segfault/.bundle/ruby/2.2.0/gems/timecop-0.7.3/lib/timecop/timecop.rb:142: [BUG] Stack consistency error (sp: 145, bp: 144)
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
```


---Files--------------------------------
bug-11071.log (50.5 KB)


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