summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorAaron Patterson <tenderlove@ruby-lang.org>2022-10-28 16:10:45 -0700
committerAaron Patterson <tenderlove@ruby-lang.org>2022-10-28 16:10:55 -0700
commit5e0432f59bb85dd3d98be3c1043a1f9c5b41d86b (patch)
tree5edfdbf50c9526670f20ea3a946e10db60c159e8 /gc.c
parent9b462aec4af0fbf9d82cbd3efe1d2cfe15f5e539 (diff)
fix ASAN error in GC
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gc.c b/gc.c
index b8c4bfb009..76a1f0f2de 100644
--- a/gc.c
+++ b/gc.c
@@ -5217,7 +5217,9 @@ try_move(rb_objspace_t *objspace, rb_heap_t *heap, struct heap_page *free_page,
if (gc_is_moveable_obj(objspace, src)) {
GC_ASSERT(MARKED_IN_BITMAP(GET_HEAP_MARK_BITS(src), src));
+ asan_unlock_freelist(free_page);
VALUE dest = (VALUE)free_page->freelist;
+ asan_lock_freelist(free_page);
asan_unpoison_object(dest, false);
if (!dest) {
/* if we can't get something from the freelist then the page must be