diff options
author | Aaron Patterson <[email protected]> | 2020-09-28 09:53:30 -0700 |
---|---|---|
committer | Aaron Patterson <[email protected]> | 2020-09-28 10:18:15 -0700 |
commit | 85e9cc2c8721badb5c6a7f80518342194d5988b4 (patch) | |
tree | 88e9c04d6a2c6534eff7e078911fa34919f5cce7 /transient_heap.c | |
parent | 0555bd8435d352a24bab1e03a7879b9abcc34b88 (diff) |
Unpoison THEAP header before reading
Another ASAN fix. THEAP header is poisoned, so we need to un-poison
before reading
Diffstat (limited to 'transient_heap.c')
-rw-r--r-- | transient_heap.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/transient_heap.c b/transient_heap.c index 809a2375b4..391dd59520 100644 --- a/transient_heap.c +++ b/transient_heap.c @@ -716,6 +716,7 @@ transient_heap_block_evacuate(struct transient_heap* theap, struct transient_hea while (marked_index >= 0) { struct transient_alloc_header *header = alloc_header(block, marked_index); + asan_unpoison_memory_region(header, sizeof *header, true); VALUE obj = header->obj; TH_ASSERT(header->magic == TRANSIENT_HEAP_ALLOC_MAGIC); if (header->magic != TRANSIENT_HEAP_ALLOC_MAGIC) rb_bug("rb_transient_heap_mark: wrong header %s\n", rb_obj_info(obj)); @@ -744,6 +745,7 @@ transient_heap_block_evacuate(struct transient_heap* theap, struct transient_hea header->obj = Qundef; /* for debug */ } marked_index = header->next_marked_index; + asan_poison_memory_region(header, sizeof *header); } } |