From: "hsbt (Hiroshi SHIBATA)" Date: 2013-04-03T10:12:03+09:00 Subject: [ruby-core:53917] [ruby-trunk - Bug #8204] ObjectSpace.each_object(Bignum) can generate Bignums that are to small to be Bignums Issue #8204 has been updated by hsbt (Hiroshi SHIBATA). Category set to core Assignee set to ko1 (Koichi Sasada) Target version set to current: 2.1.0 ---------------------------------------- Bug #8204: ObjectSpace.each_object(Bignum) can generate Bignums that are to small to be Bignums https://bugs.ruby-lang.org/issues/8204#change-38132 Author: Hanmac (Hans Mackowiak) Status: Open Priority: Normal Assignee: ko1 (Koichi Sasada) Category: core Target version: current: 2.1.0 ruby -v: ruby 2.1.0dev (2013-04-02 trunk 40068) [x86_64-linux] when i do: p ObjectSpace.each_object(Bignum).to_a => [18446744073709551615, 3, 2394213621560389257607583714845333205] and again: ObjectSpace.each_object(Bignum).to_a => [18446744073709551615, 3, 63326588221939058800767348888534802301, 0, 0, 0] my question: why does the 3 and the zeros show up? n = ObjectSpace.each_object(Bignum).min #=> 0 p n.class #Bignum p n.zero? #=> false p n < 0 # true okay this means i have a zero, that looks like zero, but is not a zero and its class is Bignum (but when i try in a new ruby session) (2**64) < 0; p bigZero = ObjectSpace.each_object(Bignum).min #=> 0 p bigZero.class #Bignum p bigZero.zero? #=> true okay, this time i get a zero that looks like a zero, and react like a zero, but its still a Bignum so where does the zeros come from and why does they react so totaly different? -- http://bugs.ruby-lang.org/