Project

General

Profile

Bug #11953

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