Unpoison THEAP header before reading

Another ASAN fix.  THEAP header is poisoned, so we need to un-poison
before reading
This commit is contained in:
Aaron Patterson 2020-09-28 09:53:30 -07:00
Родитель 0555bd8435
Коммит 85e9cc2c87
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 953170BCB4FFAFC6
1 изменённых файлов: 2 добавлений и 0 удалений

Просмотреть файл

@ -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);
}
}