Project

General

Profile

Bug #9938

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

Back