From: ko1@... Date: 2014-06-12T18:43:44+00:00 Subject: [ruby-core:63143] [ruby-trunk - Bug #9938] ObjectSpace::allocation_class_path does not object's class Issue #9938 has been updated by Koichi Sasada. Hi, Thank you for your report. Please add this magic line: ```ObjectSpace.each_object(Module){|o| o.name}``` at the beggining of script. It will show the correct output. This is because of Module naming cache issue. I want to fix this issue for 2.2. But 2.1, please left it as a spec. (we can acquire a class name if we had a luck) ---------------------------------------- Bug #9938: ObjectSpace::allocation_class_path does not object's class https://bugs.ruby-lang.org/issues/9938#change-47201 * Author: David Unric * Status: Open * Priority: Normal * Assignee: Koichi Sasada * Category: core * Target version: * ruby -v: 2.1.2 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- Possible bug in `ObjectSpace::allocation_class_path` returning `nil` instead of expected class name: `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 -- https://bugs.ruby-lang.org/