Issue #9938 has been updated by Koichi Sasada.

Status changed from Open to Rejected

----------------------------------------
Bug #9938: ObjectSpace::allocation_class_path does not object's class
https://bugs.ruby-lang.org/issues/9938#change-47803

* Author: David Unric
* Status: Rejected
* 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:

~~~ruby
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/