bind9/bin/tests
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
..
startperf Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
system Help thread sanitizer to cope with liburcu 2023-05-12 20:48:31 +01:00
testdata/wire move all optional tests from bin/tests to bin/tests/optional 2018-03-09 14:12:47 -08:00
.gitignore Refactor TLSDNS module to work with libuv/ssl directly 2021-01-25 09:19:22 +01:00
convert-trs-to-junit.py Auto-format Python files with black 2022-06-08 10:28:08 +02:00
Makefile.am Fix JUnit test status generator for out-of-tree system tests 2022-09-22 15:20:23 +02:00
test_client.c remove isc_task completely 2023-02-16 18:35:32 +01:00
test_server.c Replace __attribute__((unused)) with ISC_ATTR_UNUSED attribute macro 2023-03-30 23:29:25 +02:00
wire_test.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00