Skip to content

Commit

Permalink
py/gc: Access the list of root pointers in an asan-compatible way.
Browse files Browse the repository at this point in the history
Signed-off-by: Jeff Epler <jepler@gmail.com>
  • Loading branch information
jepler authored and dpgeorge committed May 30, 2021
1 parent f2dbc91 commit 9a74546
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion py/gc.c
Expand Up @@ -342,9 +342,19 @@ void gc_collect_start(void) {
#endif
}

// Address sanitizer needs to know that the access to ptrs[i] must always be
// considered OK, even if it's a load from an address that would normally be
// prohibited (due to being undefined, in a red zone, etc).
#ifdef __GNUC__
__attribute__((no_sanitize_address))
#endif
static void *gc_get_ptr(void **ptrs, int i) {
return ptrs[i];
}

void gc_collect_root(void **ptrs, size_t len) {
for (size_t i = 0; i < len; i++) {
void *ptr = ptrs[i];
void *ptr = gc_get_ptr(ptrs, i);
if (VERIFY_PTR(ptr)) {
size_t block = BLOCK_FROM_PTR(ptr);
if (ATB_GET_KIND(block) == AT_HEAD) {
Expand Down

0 comments on commit 9a74546

Please sign in to comment.