Project

General

Profile

Actions

Bug #17554

closed

[PATCH] Fix ObjectSpace.dump to include singleton class name

Added by byroot (Jean Boussier) about 3 years ago. Updated about 3 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin19]
[ruby-core:102137]

Description

Patch: https://github.com/ruby/ruby/pull/4087

This fixes a regression introduced in https://bugs.ruby-lang.org/issues/17044

In 2.7.2 rb_class2name would go up the inheritance chain to get a name for singleton classes. In 3.0 it no longer works:

2.7.2:

$ ruby -robjspace -e 'puts ObjectSpace.dump(Object.new.singleton_class)'
{"address":"0x7fca778cdab8", "type":"CLASS", "class":"0x7fca738bfbb0", "name":"Object", "references":["0x7fca778cdb30", "0x7fca738c57b8"], "memsize":456, "flags":{"wb_protected":true}}

3.0.0:

$ ruby -robjspace -e 'puts ObjectSpace.dump(Object.new.singleton_class)'
{"address":"0x7fdf440a7cd0", "type":"CLASS", "class":"0x7fdf408c9728", "references":["0x7fdf408ca8a8", "0x7fdf440a7d70"], "memsize":472, "flags":{"wb_protected":true}}

This name is very useful for https://github.com/Shopify/heap-profiler.

Actions

Also available in: Atom PDF

Like0
Like0