[ruby-core:63141] [ruby-trunk - Bug #9938] [Open] ObjectSpace::allocation_class_path does not object's class

From: dunric29a@...
Date: 2014-06-12 17:05:08 UTC
List: ruby-core #63141
Issue #9938 has been reported by David Unric.

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

* 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/

In This Thread

Prev Next