summaryrefslogtreecommitdiff
path: root/mark.c
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2022-04-01 11:34:18 +0300
committerIvan Maidanski <ivmai@mail.ru>2022-04-01 11:34:18 +0300
commited3a33329bff01ccf7b44eabd335fb500397267c (patch)
treefdd3129639c0750e0dde96bd4c189980c1c41669 /mark.c
parent5d6eca9e9df050f6295cdf33560f171388a66a60 (diff)
downloadbdwgc-ed3a33329bff01ccf7b44eabd335fb500397267c.tar.gz
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.
Diffstat (limited to 'mark.c')
-rw-r--r--mark.c2
1 files changed, 2 insertions, 0 deletions
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]);