[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]