From ed3a33329bff01ccf7b44eabd335fb500397267c Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Fri, 1 Apr 2022 11:34:18 +0300 Subject: Workaround TSan false positive in push_marked2/4 * mark.c [!UNALIGNED_PTRS] (GC_push_marked2): Add GC_ATTR_NO_SANITIZE_THREAD attribute. * mark.c [!UNALIGNED_PTRS && GC_GRANULE_WORDS<4] (GC_push_marked4): Likewise. --- mark.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'mark.c') diff --git a/mark.c b/mark.c index 0b067c15..75ed92e5 100644 --- a/mark.c +++ b/mark.c @@ -1746,6 +1746,7 @@ STATIC void GC_push_marked1(struct hblk *h, hdr *hhdr) /* Push all objects reachable from marked objects in the given block */ /* of size 2 (granules) objects. */ +GC_ATTR_NO_SANITIZE_THREAD STATIC void GC_push_marked2(struct hblk *h, hdr *hhdr) { word * mark_word_addr = &(hhdr->hb_marks[0]); @@ -1797,6 +1798,7 @@ STATIC void GC_push_marked2(struct hblk *h, hdr *hhdr) /* of size 4 (granules) objects. */ /* There is a risk of mark stack overflow here. But we handle that. */ /* And only unmarked objects get pushed, so it's not very likely. */ +GC_ATTR_NO_SANITIZE_THREAD STATIC void GC_push_marked4(struct hblk *h, hdr *hhdr) { word * mark_word_addr = &(hhdr->hb_marks[0]); -- cgit v1.2.1