summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Zhu <[email protected]>2024-12-18 10:19:07 -0500
committerPeter Zhu <[email protected]>2024-12-19 09:14:34 -0500
commitfcd44eee09f0a26c7711732bc8782fb8afa924f2 (patch)
treedbe0c490f6a4e22b951a03821afeaa2648537bdf
parenta72717675f0ddaa07127ea2fa25b7c1e271fdbce (diff)
Fix compaction in ASAN with RGENGC_CHECK_MODE enabled
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/12385
-rw-r--r--gc/default/default.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gc/default/default.c b/gc/default/default.c
index c0e7953842..4dc4776fc5 100644
--- a/gc/default/default.c
+++ b/gc/default/default.c
@@ -3663,7 +3663,10 @@ gc_sweep_page(rb_objspace_t *objspace, rb_heap_t *heap, struct gc_sweep_context
struct free_slot *ptr = sweep_page->freelist;
while (ptr) {
freelist_len++;
- ptr = ptr->next;
+ asan_unpoison_object((VALUE)ptr, false);
+ struct free_slot *next = ptr->next;
+ asan_poison_object((VALUE)ptr);
+ ptr = next;
}
asan_lock_freelist(sweep_page);
if (freelist_len != sweep_page->free_slots) {