mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 16:44:01 +02:00
merge revision(s) e1bd45624c
: [Backport #19482]
Fix crash when allocating classes with newobj hook We need to zero out the whole slot when running the newobj hook for a newly allocated class because the slot could be filled with garbage, which would cause a crash if a GC runs inside of the newobj hook. For example, the following script crashes: ``` require "objspace" GC.stress = true ObjectSpace.trace_object_allocations { 100.times do Class.new end } ``` [Bug #19482] --- gc.c | 8 +++++++- test/objspace/test_objspace.rb | 7 +++++++ 2 files changed, 14 insertions(+), 1 deletion(-)
This commit is contained in:
parent
44a8e5e63a
commit
141402d11c
3 changed files with 15 additions and 2 deletions
|
@ -216,6 +216,13 @@ class TestObjSpace < Test::Unit::TestCase
|
|||
assert_equal(c3, ObjectSpace.allocation_generation(o3))
|
||||
assert_equal(self.class.name, ObjectSpace.allocation_class_path(o3))
|
||||
assert_equal(__method__, ObjectSpace.allocation_method_id(o3))
|
||||
|
||||
# [Bug #19482]
|
||||
EnvUtil.under_gc_stress do
|
||||
100.times do
|
||||
Class.new
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue