Project

General

Profile

Bug #18604

Updated by mentalizer (Jakob Skjerning) over 2 years ago

After upgrading to Ruby 3.1 one of our statistical dashboards started crashing with a message saying 

     [BUG] ERROR(VpDivd): space for remainder too small 

 ### How to reproduce 

 This can be reproduced in irb (reproduction script is attached containing the below code): 

 ``` ruby 
 $ irb 
 3.1.1 :001 > require "bigdecimal" 
  => true 
 3.1.1 :002 > 1.0 / BigDecimal("0.9652409267836026803310997240835632636973e2") 
 ``` 

 ### Actual result 

 ```ruby 
 (irb):2: [BUG] ERROR(VpDivd): space for remainder too small. 
 ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [arm64-darwin21] 

 -- Crash Report log information -------------------------------------------- 
 ... etc... 

 ``` 

 Full output from running reproduction script has been attached. 

 ``` 

 ### Expected results 

 The result of division, which is roughly: 

 ``` 
  => 0.10360107743589181177761764314914637186293143963577706371029263e-1 
 ``` 

 ### Affected Rubies 

 So far I've been able to reproduce this on... 

 - ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [arm64-darwin21] 
 - ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [x86_64-linux] 
 - ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [arm64-darwin21] 

 The following seem to work just fine: 

 - ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [arm64-darwin21] 

 ### Notes 

 Admittedly, the precision here is way higher that we actually need it to be, and our workaround has been to simply convert the BigDecimal to Float before dividing. 

 ```ruby 
 1.0 / BigDecimal("0.9652409267836026803310997240835632636973e2").to_f 
 # => 0.010360107743589182 
 ``` 

Back