Project

General

Profile

Bug #11953

Updated by nobu (Nobuyoshi Nakada) about 1 year ago

This is my first bug reporting, so I'm sorry if this isn't exactly correct format. I'll update my report accordingly if pointed in the right direction.

I ran into what appears to be a bug while doing a quiz.

I've included the breaking code, the test suite and the description of the quiz as attachments to this bug report.

The following code works fine on Ruby 2.2.4.

```ruby
class Prime
def self.nth(num)
error(num)
primes = build_primes(num)
primes.last
end

private

def build_primes(num)
primes = [2]
index = 3
until primes.size == num
if example?(index, primes)
primes << index
end
index += 1
end
primes
end

def error(num)
unless num > 0
raise ArgumentError
end
end

def example?(index, primes)
primes.each do |prime|
if index % prime == 0
return false
end
end
true
end
end
```


It raises this error in Ruby 2.3.0

```
ThreadError: deadlock; recursive locking
/home/clayton/.rubies/ruby-2.3.0/lib/ruby/2.3.0/singleton.rb:140:in `synchronize'
/home/clayton/.rubies/ruby-2.3.0/lib/ruby/2.3.0/singleton.rb:140:in `instance'
/home/clayton/.rubies/ruby-2.3.0/lib/ruby/2.3.0/singleton.rb:142:in `block in instance'
/home/clayton/.rubies/ruby-2.3.0/lib/ruby/2.3.0/singleton.rb:140:in `synchronize'
/home/clayton/.rubies/ruby-2.3.0/lib/ruby/2.3.0/singleton.rb:140:in `instance'
/home/clayton/exercism/ruby/nth-prime/nth_prime.rb:3:in `nth'
nth_prime_test.rb:28:in `test_first'
```


If this is expected behavior, I'm sorry in advance for wasting your time.

Back