summaryrefslogtreecommitdiff
path: root/test/objspace
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2022-07-21 14:50:44 +0200
committerJean Boussier <jean.boussier@gmail.com>2022-07-21 18:43:45 +0200
commit79406e3600862bbb6dcdd7c5ef8de1978e6f916c (patch)
tree72dabd6309768b702d7d740b2af97688fea4a973 /test/objspace
parent5b21e94bebed90180d8ff63dad03b8b948361089 (diff)
downloadruby-79406e3600862bbb6dcdd7c5ef8de1978e6f916c.tar.gz
objspace_dump.c: skip dumping method name if not pure ASCII
Sidekiq has a method named `❨╯°□°❩╯︵┻━┻`which corrupts heap dumps. Normally we could just dump is as is since it's valid UTF-8 and need no escaping. But our code to escape control characters isn't UTF-8 aware so it's more complicated than it seems. Ultimately since the overwhelming majority of method names are pure ASCII, it's not a big loss to just skip it.
Diffstat (limited to 'test/objspace')
-rw-r--r--test/objspace/test_objspace.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/test/objspace/test_objspace.rb b/test/objspace/test_objspace.rb
index 1392447e4f..59ab8e7adc 100644
--- a/test/objspace/test_objspace.rb
+++ b/test/objspace/test_objspace.rb
@@ -725,4 +725,17 @@ class TestObjSpace < Test::Unit::TestCase
assert_equal '42', out[2]
end
end
+
+ def test_utf8_method_names
+ obj = ObjectSpace.trace_object_allocations do
+ utf8_❨╯°□°❩╯︵┻━┻
+ end
+ assert_nil JSON.parse(ObjectSpace.dump(obj))["method"]
+ end
+
+ private
+
+ def utf8_❨╯°□°❩╯︵┻━┻
+ "1" + "2"
+ end
end