diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2022-04-01 11:34:18 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2022-04-01 11:34:18 +0300 |
commit | ed3a33329bff01ccf7b44eabd335fb500397267c (patch) | |
tree | fdd3129639c0750e0dde96bd4c189980c1c41669 /mark.c | |
parent | 5d6eca9e9df050f6295cdf33560f171388a66a60 (diff) | |
download | bdwgc-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.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -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]); |