ruby-changes:71020
From: Nobuyoshi <ko1@a...>
Date: Wed, 26 Jan 2022 15:54:58 +0900 (JST)
Subject: [ruby-changes:71020] 16e7585557 (master): Unpoison the cached object in the exact size
https://git.ruby-lang.org/ruby.git/commit/?id=16e7585557 From 16e7585557c338563447861ee50f835514bb7e3c Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada <nobu@r...> Date: Wed, 26 Jan 2022 14:34:25 +0900 Subject: Unpoison the cached object in the exact size --- gc.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gc.c b/gc.c index a29f7b0cc38..642d6d1c75f 100644 --- a/gc.c +++ b/gc.c @@ -2372,11 +2372,17 @@ ractor_cached_free_region(rb_objspace_t *objspace, rb_ractor_t *cr, size_t size_ https://github.com/ruby/ruby/blob/trunk/gc.c#L2372 if (p) { VALUE obj = (VALUE)p; + MAYBE_UNUSED(const size_t) stride = size_pool_slot_size(size_pool_idx); cache->freelist = p->as.free.next; +#if USE_RVARGC + asan_unpoison_memory_region(p, stride, true); +#else asan_unpoison_object(obj, true); +#endif #if RGENGC_CHECK_MODE + GC_ASSERT(cache->using_page.slot_size == (short)stride); // zero clear - MEMZERO((char *)obj, char, size_pool_slot_size(size_pool_idx)); + MEMZERO((char *)obj, char, stride); #endif return obj; } -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/