bind9/lib/isc
Ondřej Surý 2e1dd56d0b Fix the data race in accessing the isc_nm_t timers
The following TSAN report about accessing the mgr timers (mgr->init,
mgr->idle, mgr->keepalive and mgr->advertised) has been fixed in this
commit:

    ==================
    WARNING: ThreadSanitizer: data race (pid=2746)
    Read of size 4 at 0x7b440008a948 by thread T18:
    #0 isc__nm_tcpdns_read /home/ondrej/Projects/bind9/lib/isc/netmgr/tcpdns.c:849:25 (libisc.so.1706+0x2ba0f)
    #1 isc_nm_read /home/ondrej/Projects/bind9/lib/isc/netmgr/netmgr.c:1679:3 (libisc.so.1706+0x22258)
    #2 tcpdns_connect_connect_cb /home/ondrej/Projects/bind9/lib/isc/tests/tcpdns_test.c:363:2 (tcpdns_test+0x4bc5fb)
    #3 isc__nm_async_connectcb /home/ondrej/Projects/bind9/lib/isc/netmgr/netmgr.c:1816:2 (libisc.so.1706+0x228c9)
    #4 isc__nm_connectcb /home/ondrej/Projects/bind9/lib/isc/netmgr/netmgr.c:1791:3 (libisc.so.1706+0x22713)
    #5 tcpdns_connect_cb /home/ondrej/Projects/bind9/lib/isc/netmgr/tcpdns.c:343:2 (libisc.so.1706+0x2d89d)
    #6 uv__stream_connect /home/ondrej/Projects/tsan/libuv/src/unix/stream.c:1381:5 (libuv.so.1+0x27c18)
    #7 uv__stream_io /home/ondrej/Projects/tsan/libuv/src/unix/stream.c:1298:5 (libuv.so.1+0x25977)
    #8 uv__io_poll /home/ondrej/Projects/tsan/libuv/src/unix/linux-core.c:462:11 (libuv.so.1+0x2e795)
    #9 uv_run /home/ondrej/Projects/tsan/libuv/src/unix/core.c:385:5 (libuv.so.1+0x158ec)
    #10 nm_thread /home/ondrej/Projects/bind9/lib/isc/netmgr/netmgr.c:530:11 (libisc.so.1706+0x1c94a)

    Previous write of size 4 at 0x7b440008a948 by main thread:
    #0 isc_nm_settimeouts /home/ondrej/Projects/bind9/lib/isc/netmgr/netmgr.c:490:12 (libisc.so.1706+0x1dda5)
    #1 tcpdns_recv_two /home/ondrej/Projects/bind9/lib/isc/tests/tcpdns_test.c:601:2 (tcpdns_test+0x4bad0e)
    #2 cmocka_run_one_test_or_fixture <null> (libcmocka.so.0+0x70be)
    #3 __libc_start_main /build/glibc-vjB4T1/glibc-2.28/csu/../csu/libc-start.c:308:16 (libc.so.6+0x2409a)

    Location is heap block of size 281 at 0x7b440008a840 allocated by main thread:
    #0 malloc <null> (tcpdns_test+0x42864b)
    #1 default_memalloc /home/ondrej/Projects/bind9/lib/isc/mem.c:713:8 (libisc.so.1706+0x6d261)
    #2 mem_get /home/ondrej/Projects/bind9/lib/isc/mem.c:622:8 (libisc.so.1706+0x69b9c)
    #3 isc___mem_get /home/ondrej/Projects/bind9/lib/isc/mem.c:1044:9 (libisc.so.1706+0x6d379)
    #4 isc__mem_get /home/ondrej/Projects/bind9/lib/isc/mem.c:2432:10 (libisc.so.1706+0x6889e)
    #5 isc_nm_start /home/ondrej/Projects/bind9/lib/isc/netmgr/netmgr.c:203:8 (libisc.so.1706+0x1c219)
    #6 nm_setup /home/ondrej/Projects/bind9/lib/isc/tests/tcpdns_test.c:244:11 (tcpdns_test+0x4baaa4)
    #7 cmocka_run_one_test_or_fixture <null> (libcmocka.so.0+0x70fd)
    #8 __libc_start_main /build/glibc-vjB4T1/glibc-2.28/csu/../csu/libc-start.c:308:16 (libc.so.6+0x2409a)

    Thread T18 'isc-net-0000' (tid=3513, running) created by main thread at:
    #0 pthread_create <null> (tcpdns_test+0x429e7b)
    #1 isc_thread_create /home/ondrej/Projects/bind9/lib/isc/pthreads/thread.c:73:8 (libisc.so.1706+0x8476a)
    #2 isc_nm_start /home/ondrej/Projects/bind9/lib/isc/netmgr/netmgr.c:271:3 (libisc.so.1706+0x1c66a)
    #3 nm_setup /home/ondrej/Projects/bind9/lib/isc/tests/tcpdns_test.c:244:11 (tcpdns_test+0x4baaa4)
    #4 cmocka_run_one_test_or_fixture <null> (libcmocka.so.0+0x70fd)
    #5 __libc_start_main /build/glibc-vjB4T1/glibc-2.28/csu/../csu/libc-start.c:308:16 (libc.so.6+0x2409a)

    SUMMARY: ThreadSanitizer: data race /home/ondrej/Projects/bind9/lib/isc/netmgr/tcpdns.c:849:25 in isc__nm_tcpdns_read
    ==================
    ThreadSanitizer: reported 1 warnings
2020-12-02 10:14:31 +01:00
..
include Refactor netmgr and add more unit tests 2020-12-01 16:47:07 +01:00
netmgr Fix the data race in accessing the isc_nm_t timers 2020-12-02 10:14:31 +01:00
pthreads update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
tests Disable the new netmgr tests on non-Linux platforms 2020-12-01 17:24:15 +01:00
unix Clean the last remnant of ISC_PLATFORM_HAVEIPV6 macro 2020-10-08 08:28:33 +02:00
win32 Refactor netmgr and add more unit tests 2020-12-01 16:47:07 +01:00
.gitignore [master] update gitignore files; use rev-parse to get srcid 2014-06-17 13:49:30 -07:00
aes.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
api Update library API versions 2020-11-26 12:12:17 +01:00
app.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
assertions.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
astack.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
backtrace.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
base32.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
base64.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
bind9.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
buffer.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
commandline.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
counter.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
crc64.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
entropy.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
entropy_private.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
error.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
event.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
fsaccess_common.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
fsaccess_common_p.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
glob.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
hash.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
heap.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
hex.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
hmac.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
hp.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
ht.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
httpd.c Fix the isc_nm_closedown() to actually close the pending connections 2020-10-22 11:37:16 -07:00
iterated_hash.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
lex.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
lib.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
log.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
Makefile.am Refactor netmgr and add more unit tests 2020-12-01 16:47:07 +01:00
md.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
mem.c Exclude isc_mem_isovermem from ThreadSanitizer 2020-09-17 13:51:50 +00:00
mem_p.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
mutexblock.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
netaddr.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
netscope.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
nonce.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
openssl_shim.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
openssl_shim.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
parseint.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
pk11.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
pk11_result.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
pool.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
portset.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
queue.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
quota.c Refactor netmgr and add more unit tests 2020-12-01 16:47:07 +01:00
radix.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
random.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
ratelimiter.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
regex.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
region.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
result.c netmgr: server-side TLS support 2020-11-10 14:16:27 +01:00
rwlock.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
safe.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
serial.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
siphash.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
sockaddr.c netmgr: server-side TLS support 2020-11-10 14:16:27 +01:00
stats.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
string.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
symtab.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
task.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
task_p.h update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
taskpool.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
timer.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
tm.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00
utf8.c update all copyright headers to eliminate the typo 2020-09-14 16:20:40 -07:00