Project

General

Profile

Bug #11953

Updated by nobu (Nobuyoshi Nakada) almost 8 years 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