Bug #9938
Updated by nobu (Nobuyoshi Nakada) over 10 years ago
Possible bug in `ObjectSpace::allocation_class_path` returning `nil` instead of expected class name: ~~~ruby require `require 'objspace' class A def foo ObjectSpace::trace_object_allocations do obj = Object.new p ObjectSpace::allocation_class_path(obj) # "A" expected, prints nil instead obj = Array.new p ObjectSpace::allocation_class_path(obj) # "A" expected, prints nil instead obj = [] p ObjectSpace::allocation_class_path(obj) # prints "A" as expected !! obj = obj.dup p ObjectSpace::allocation_class_path(obj) # "A" expected, prints nil instead !! obj = Hash.new p ObjectSpace::allocation_class_path(obj) # "A" expected, prints nil instead obj = {} p ObjectSpace::allocation_class_path(obj) # prints "A" as expected !! end end end A.new.foo ~~~ ` Very inconsistent behavior, `allocation_class_path` seems to works only with objects defined with literals not instantiated with `class.new` method. Also discussed at StackOverflow: http://stackoverflow.com/questions/24181789/objectspaceallocation-class-path-not-working-as-expected