bind9/bin
Tony Finch c377e0a9e3
Help thread sanitizer to cope with liburcu
All the places the qp-trie code was using `call_rcu()` needed
`__tsan_release()` and `__tsan_acquire()` annotations, so
add a couple of wrappers to encapsulate this pattern.

With these wrappers, the tests run almost clean under thread
sanitizer. The remaining problems are due to `rcu_barrier()`
which can be suppressed using `.tsan-suppress`. It does not
suppress the whole of `liburcu`, because we would like thread
sanitizer to detect problems in `call_rcu()` callbacks, which
are called from `liburcu`.

The CI jobs have been updated to use `.tsan-suppress` by
default, except for a special-case job that needs the
additional suppressions in `.tsan-suppress-extra`.

We might be able to get rid of some of this after liburcu gains
support for thread sanitizer.

Note: the `rcu_barrier()` suppression is not entirely effective:
tsan sometimes reports races that originate inside `rcu_barrier()`
but tsan has discarded the stack so it does not have the
information required to suppress the report. These "races" can
be made much easier to reproduce by adding `atexit_sleep_ms=1000`
to `TSAN_OPTIONS`. The problem with tsan's short memory can be
addressed by increasing `history_size`: when it is large enough
(6 or 7) the `rcu_barrier()` stack usually survives long enough
for suppression to work.
2023-05-12 20:48:31 +01:00
..
check Replace DE_CONST(k, v) with v = UNCONST(k) macro 2023-04-03 10:25:56 +00:00
confgen Handle fatal and FIPS provider interactions 2023-04-03 12:44:27 +10:00
delv The zone table no longer depends on the loop manager 2023-05-12 20:48:31 +01:00
dig dighost.c: don't call check_if_done() twice successively 2023-05-10 11:35:51 +00:00
dnssec Replace DE_CONST(k, v) with v = UNCONST(k) macro 2023-04-03 10:25:56 +00:00
named The zone table no longer depends on the loop manager 2023-05-12 20:48:31 +01:00
nsupdate Disable ASAN in nsupdate for fatal cases 2023-05-11 13:39:51 +02:00
plugins Remove 'inst != NULL' from cleanup check in plugin_register 2023-04-04 23:51:22 +00:00
rndc add 'rndc -t' option to set timeout 2023-05-12 11:28:21 -07:00
tests Help thread sanitizer to cope with liburcu 2023-05-12 20:48:31 +01:00
tools The zone table no longer depends on the loop manager 2023-05-12 20:48:31 +01:00
Makefile.am Remove native PKCS#11 support 2021-09-09 15:35:39 +02:00