Fix SEGV caused by `GC::Profiler.raw_data` (#9122)

This commit is contained in:
Soutaro Matsumoto 2023-12-07 10:37:00 +09:00 коммит произвёл GitHub
Родитель 5078aa825c
Коммит 4f213ea1ba
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 9 добавлений и 1 удалений

2
gc.c
Просмотреть файл

@ -13258,7 +13258,7 @@ gc_profile_record_get(VALUE _)
gc_profile_record *record = &objspace->profile.records[i];
prof = rb_hash_new();
rb_hash_aset(prof, ID2SYM(rb_intern("GC_FLAGS")), gc_info_decode(0, rb_hash_new(), record->flags));
rb_hash_aset(prof, ID2SYM(rb_intern("GC_FLAGS")), gc_info_decode(objspace, rb_hash_new(), record->flags));
rb_hash_aset(prof, ID2SYM(rb_intern("GC_TIME")), DBL2NUM(record->gc_time));
rb_hash_aset(prof, ID2SYM(rb_intern("GC_INVOKE_TIME")), DBL2NUM(record->gc_invoke_time));
rb_hash_aset(prof, ID2SYM(rb_intern("HEAP_USE_SIZE")), SIZET2NUM(record->heap_use_size));

Просмотреть файл

@ -579,6 +579,14 @@ class TestGc < Test::Unit::TestCase
RUBY
end
def test_profiler_raw_data
GC::Profiler.enable
GC.start
assert GC::Profiler.raw_data
ensure
GC::Profiler.disable
end
def test_profiler_total_time
GC::Profiler.enable
GC::Profiler.clear