Ondřej Surý and Mark Andrews
761cedc2b4
Don't use rwlocks for reference counting
...
WARNING: ThreadSanitizer: data race
Write of size 8 at 0x000000000001 by thread T1 (mutexes: write M1):
#0 memset <null>
#1 mem_put lib/isc/mem.c:819
#2 isc___mem_free lib/isc/mem.c:1662
#3 isc__mem_free lib/isc/mem.c:3078
#4 isc___mem_putanddetach lib/isc/mem.c:1221
#5 isc__mem_putanddetach lib/isc/mem.c:3033
#6 destroyring lib/dns/tsig.c:494
#7 dns_tsigkeyring_dumpanddetach lib/dns/tsig.c:665
#8 destroy lib/dns/view.c:392
#9 dns_view_weakdetach lib/dns/view.c:704
#10 zone_free lib/dns/zone.c:1152
#11 zone_shutdown lib/dns/zone.c:13123
#12 dispatch lib/isc/task.c:1157
#13 run lib/isc/task.c:1331
#14 <null> <null>
Previous atomic read of size 8 at 0x000000000001 by thread T2:
#0 __tsan_atomic64_load <null>
#1 isc_rwlock_unlock lib/isc/rwlock.c:612
#2 dns_tsigkeyring_dumpanddetach lib/dns/tsig.c:632
#3 destroy lib/dns/view.c:392
#4 dns_view_weakdetach lib/dns/view.c:704
#5 zone_free lib/dns/zone.c:1149
#6 zone_shutdown lib/dns/zone.c:13123
#7 dispatch lib/isc/task.c:1157
#8 run lib/isc/task.c:1331
#9 <null> <null>
2020-12-10 06:31:19 +00:00
Mark Andrews
b86b3fe853
Ignore TSAN errors when accessing 'ns_client_requests'
2020-12-10 06:31:19 +00:00
Mark Andrews
d85196cdca
Ignore TSAN errors accessing init_count and header->count
...
WARNING: ThreadSanitizer: data race
Write of size 4 at 0x000000000001 by thread T1 (mutexes: write M1):
#0 subtractrdataset lib/dns/rbtdb.c:7065:21
#1 dns_db_subtractrdataset lib/dns/db.c:807:10
#2 diff_apply lib/dns/diff.c:377:14
#3 dns_diff_apply lib/dns/diff.c:458:10
#4 do_one_tuple lib/dns/zone.c:4103:11
#5 update_one_rr lib/dns/zone.c:4132:10
#6 keyfetch_done lib/dns/zone.c:9835:4
#7 dispatch lib/isc/task.c:1157:7
#8 run lib/isc/task.c:1331:2
Previous write of size 4 at 0x000000000001 by thread T2 (mutexes: write M2):
#0 addrdataset lib/dns/rbtdb.c:6869:21
#1 dns_db_addrdataset lib/dns/db.c:783:10
#2 addoptout lib/dns/ncache.c:264:10
#3 dns_ncache_add lib/dns/ncache.c:101:10
#4 ncache_adderesult lib/dns/resolver.c:5989:12
#5 ncache_message lib/dns/resolver.c:6165:11
#6 resquery_response lib/dns/resolver.c:8691:12
#7 dispatch lib/isc/task.c:1157:7
#8 run lib/isc/task.c:1331:2
2020-12-10 06:31:19 +00:00
Mark Andrews
fdb893ede1
Address data race in dns_stats_detach over references
...
WARNING: ThreadSanitizer: data race
Write of size 4 at 0x000000000001 by thread T1 (mutexes: write M1):
#0 dns_stats_detach lib/dns/stats.c:115:19
#1 destroy lib/dns/view.c:527:3
#2 dns_view_weakdetach lib/dns/view.c:704:3
#3 zone_free lib/dns/zone.c:1149:3
#4 zone_shutdown lib/dns/zone.c:13123:3
#5 dispatch lib/isc/task.c:1157:7
#6 run lib/isc/task.c:1331:2
Previous read of size 4 at 0x000000000001 by thread T2:
#0 dns_stats_detach lib/dns/stats.c:118:13
#1 destroy lib/dns/view.c:527:3
#2 dns_view_weakdetach lib/dns/view.c:704:3
#3 zone_free lib/dns/zone.c:1152:3
#4 zone_shutdown lib/dns/zone.c:13123:3
#5 dispatch lib/isc/task.c:1157:7
#6 run lib/isc/task.c:1331:2
2020-12-10 06:31:19 +00:00
Mark Andrews
e989ba66f0
Lock access to acache stats when not using atomics
...
WARNING: ThreadSanitizer: data race
Write of size 4 at 0x000000000001 by thread T1 (mutexes: write M1):
#0 dns_acache_getentry lib/dns/acache.c:1549:2
#1 rdataset_getadditional lib/dns/rbtdb.c:9912:11
#2 dns_rdataset_getadditional lib/dns/rdataset.c:711:11
#3 query_addadditional2 bin/named/query.c:1991:11
#4 additionaldata_ns lib/dns/./rdata/generic/ns_2.c:198:10
#5 dns_rdata_additionaldata lib/dns/rdata.c:1246:2
#6 dns_rdataset_additionaldata lib/dns/rdataset.c:629:12
#7 query_addrdataset bin/named/query.c:2435:8
#8 query_addrrset bin/named/query.c:2826:2
#9 query_addbestns bin/named/query.c:3525:2
#10 query_find bin/named/query.c:9204:4
#11 query_resume bin/named/query.c:4188:12
#12 dispatch lib/isc/task.c:1157:7
#13 run lib/isc/task.c:1331:2
Previous write of size 4 at 0x000000000001 by thread T2 (mutexes: write M2):
#0 dns_acache_countquerymiss lib/dns/acache.c:1201:2
#1 rdataset_getadditional lib/dns/rbtdb.c:9896:4
#2 dns_rdataset_getadditional lib/dns/rdataset.c:711:11
#3 query_addadditional2 bin/named/query.c:1991:11
#4 additionaldata_ns lib/dns/./rdata/generic/ns_2.c:198:10
#5 dns_rdata_additionaldata lib/dns/rdata.c:1246:2
#6 dns_rdataset_additionaldata lib/dns/rdataset.c:629:12
#7 query_addrdataset bin/named/query.c:2435:8
#8 query_addrrset bin/named/query.c:2826:2
#9 query_find bin/named/query.c:9176:4
#10 query_resume bin/named/query.c:4188:12
#11 dispatch lib/isc/task.c:1157:7
2020-12-10 06:31:19 +00:00
Mark Andrews
d4a59f232e
Ignore TSAN warnings in state_key_init - deliberate
...
WARNING: ThreadSanitizer: data race
Write of size 1 at 0x000000000001 by thread T1 (mutexes: write M1, write M2):
#0 state_key_init lib/dns/geoip2.c:150:5
#1 get_entry_for lib/dns/geoip2.c:241:11
#2 dns_geoip_match lib/dns/geoip2.c:410:10
#3 dns_aclelement_match2 lib/dns/acl.c:493:11
#4 dns_acl_match2 lib/dns/acl.c:298:7
#5 allowed bin/named/client.c:1869:11
#6 ns_client_isself bin/named/client.c:1934:7
#7 notify_isself lib/dns/zone.c:11055:11
#8 notify_send lib/dns/zone.c:11374:7
#9 notify_find_address lib/dns/zone.c:11178:2
#10 zone_notify lib/dns/zone.c:11616:3
#11 zone_maintenance lib/dns/zone.c:10291:4
#12 zone_timer lib/dns/zone.c:13136:2
#13 dispatch lib/isc/task.c:1157:7
#14 run lib/isc/task.c:1331:2
Previous read of size 1 at 0x000000000001 by thread T2 (mutexes: write M3):
#0 state_key_init lib/dns/geoip2.c:134:7
#1 get_entry_for lib/dns/geoip2.c:241:11
#2 dns_geoip_match lib/dns/geoip2.c:410:10
#3 dns_aclelement_match2 lib/dns/acl.c:493:11
#4 dns_acl_match2 lib/dns/acl.c:298:7
#5 allowed bin/named/client.c:1869:11
#6 ns_client_isself bin/named/client.c:1934:7
#7 notify_isself lib/dns/zone.c:11055:11
#8 notify_send lib/dns/zone.c:11374:7
#9 notify_find_address lib/dns/zone.c:11178:2
#10 zone_notify lib/dns/zone.c:11616:3
#11 zone_maintenance lib/dns/zone.c:10291:4
#12 zone_timer lib/dns/zone.c:13136:2
#13 dispatch lib/isc/task.c:1157:7
#14 run lib/isc/task.c:1331:2
2020-12-10 06:31:19 +00:00
Mark Andrews
5f6ab3512e
Silence TSAN warning on spins in isc_rwlock_lock
...
WARNING: ThreadSanitizer: data race
Write of size 4 at 0x000000000001 by thread T1:
#0 isc_rwlock_lock lib/isc/rwlock.c:720:2
#1 findnodeintree lib/dns/rbtdb.c:3060:2
#2 findnsec3node lib/dns/rbtdb.c:3164:10
#3 dns_db_findnsec3node lib/dns/db.c:528:10
#4 diff_apply lib/dns/diff.c:318:5
#5 dns_diff_applysilently lib/dns/diff.c:463:10
#6 signname bin/dnssec/./dnssec-signzone.c:1118:11
#7 sign bin/dnssec/./dnssec-signzone.c:1599:2
#8 dispatch lib/isc/task.c:1157:7
#9 run lib/isc/task.c:1331:2
Previous read of size 4 at 0x000000000001 by thread T2:
#0 isc_rwlock_lock lib/isc/rwlock.c:704:25
#1 addrdataset lib/dns/rbtdb.c:6853:2
#2 dns_db_addrdataset lib/dns/db.c:783:10
#3 diff_apply lib/dns/diff.c:370:14
#4 dns_diff_applysilently lib/dns/diff.c:463:10
#5 signname bin/dnssec/./dnssec-signzone.c:1118:11
#6 sign bin/dnssec/./dnssec-signzone.c:1599:2
#7 dispatch lib/isc/task.c:1157:7
#8 run lib/isc/task.c:1331:2
2020-12-10 06:31:19 +00:00
Mark Andrews
a241c69920
Lock read of refs when atomics are not available.
...
WARNING: ThreadSanitizer: data race
Read of size 4 at 0x000000000001 by thread T1 (mutexes: write M1):
#0 zone_iattach lib/dns/zone.c:5412:2
#1 soa_query lib/dns/zone.c:12725:2
#2 dispatch lib/isc/task.c:1157:7
#3 run lib/isc/task.c:1331:2
Previous write of size 4 at 0x000000000001 by thread T2 (mutexes: write M2):
#0 dns_zone_detach lib/dns/zone.c:5346:2
#1 ns_server_refreshcommand bin/named/./server.c:9880:3
#2 ns_control_docommand bin/named/control.c:247:12
#3 control_recvmessage bin/named/controlconf.c:469:13
#4 dispatch lib/isc/task.c:1157:7
#5 run lib/isc/task.c:1331:2
2020-12-10 06:31:19 +00:00
Mark Andrews
1caef804d5
Ignore thread sanitizer warnings in stats counters
...
set ISC_NO_SANITIZE_THREAD for incrementcounter and decrementcounter
WARNING: ThreadSanitizer: data race
Write of size 8 at 0x000000000001 by thread T1:
#0 decrementcounter lib/isc/stats.c:258:26
#1 isc_stats_decrement lib/isc/stats.c:350:2
#2 dec_stats lib/isc/unix/socket.c:934:3
#3 socketclose lib/isc/unix/socket.c:2270:3
#4 destroy lib/isc/unix/socket.c:2323:3
#5 isc__socket_detach lib/isc/unix/socket.c:3275:3
#6 isc_socket_detach lib/isc/unix/./../socket_api.c:128:3
#7 exit_check bin/named/client.c:593:4
#8 ns_client_next bin/named/client.c:947:8
#9 client_request bin/named/client.c
#10 dispatch lib/isc/task.c:1157:7
#11 run lib/isc/task.c:1331:2
Previous write of size 8 at 0x000000000001 by thread T2:
#0 incrementcounter lib/isc/stats.c:239:26
#1 isc_stats_increment lib/isc/stats.c:340:2
#2 inc_stats lib/isc/unix/socket.c:923:3
#3 internal_accept lib/isc/unix/socket.c:3741:4
#4 dispatch lib/isc/task.c:1157:7
#5 run lib/isc/task.c:1331:2
2020-12-10 06:31:19 +00:00
Mark Andrews
0e5a076cc1
Prevent inlining of code with thread sanitiser disabled
2020-12-10 06:31:19 +00:00
Mark Andrews
c2676bccc5
Add TSAN builds and tests with --disable-atomics specified
2020-12-10 06:31:19 +00:00
Mark Andrews
1b47fbab11
Merge branch '2324-key_mutex-undeclared-in-geoip2-c-with-threads-disabled' into 'v9_11'
...
Resolve "'key_mutex' undeclared in geoip2.c with threads disabled"
See merge request isc-projects/bind9!4454
2020-12-10 03:10:04 +00:00
Mark Andrews
d8047eeb94
Add CHANGES
2020-12-10 13:47:07 +11:00
Mark Andrews
f3c402baed
Only lock access to epoll_ctl when using watcher thread
2020-12-10 02:34:36 +00:00
Mark Andrews
7466b505b3
check result
2020-12-10 02:34:36 +00:00
Mark Andrews
136804b1a0
#ifdef protect key_mutex
2020-12-10 02:34:36 +00:00
Ondřej Surý
89a74d0b01
Merge branch 'ondrej/clang-format-11-v9_11' into 'v9_11'
...
Bump the clang version to 11 (v9.11)
See merge request isc-projects/bind9!4481
2020-12-08 19:09:22 +00:00
Ondřej Surý
e39899a718
Bump the clang version to 11 (stable)
2020-12-08 19:41:48 +01:00
Ondřej Surý
171e3ac2c9
Merge branch '2250-dns-flag-day-2020-revert-nocookie-udp-size-v9_11' into 'v9_11'
...
Resolve "DNS Flag Day 2020 - EDNS buffer size configuring does not work anymore"
See merge request isc-projects/bind9!4457
2020-12-02 15:33:25 +00:00
Ondřej Surý and Ondřej Surý
8aa8e521a9
Add CHANGES and release not for GL #2250
...
(cherry picked from commit c7d81f12f8 )
2020-12-02 12:06:22 +01:00
Ondřej Surý and Ondřej Surý
6425dfa9cb
Change the default value for nocookie-udp-size back to 4096
...
The DNS Flag Day 2020 reduced all the EDNS buffer sizes to 1232. In
this commit, we revert the default value for nocookie-udp-size back to
4096 because the option is too obscure and most people don't realize
that they also need to change this configuration option in addition to
max-udp-size.
(cherry picked from commit 79c196fc77 )
2020-12-02 12:04:28 +01:00
Mark Andrews
867649907c
Merge branch 'nothread-tast_test' into 'v9_11'
...
Pass task_test also with threads disabled
See merge request isc-projects/bind9!4442
2020-12-01 23:28:13 +00:00
Petr Mensik and Mark Andrews
839350f5f6
Pass task_test also with threads disabled
...
Condition cv is declared only when threads are used. Use it only in that
case. Test compiles and passes without thread support also.
2020-12-01 23:06:19 +00:00
Mark Andrews
0563ccd25d
Merge branch '2305-adjust-recursion-limits-v9_11' into 'v9_11'
...
Adjust default value of "max-recursion-queries"
See merge request isc-projects/bind9!4448
2020-12-01 22:29:48 +00:00
Mark Andrews
d09991e4e9
Adjust default value of "max-recursion-queries"
...
Since the queries sent towards root and TLD servers are now included in
the count (as a result of the fix for CVE-2020-8616),
"max-recursion-queries" has a higher chance of being exceeded by
non-attack queries. Increase its default value from 75 to 100.
(cherry picked from commit ab0bf49203 )
2020-12-01 22:13:05 +00:00
Mark Andrews
53203b8f04
Merge branch '2280-check-dname-handling-when-qtype-is-cname-any-2' into 'v9_11'
...
Resolve "Check DNAME handling when QTYPE is CNAME/ANY"
See merge request isc-projects/bind9!4394
2020-12-01 22:12:35 +00:00
Mark Andrews and Evan Hunt
ca9dc40634
Fix DNAME when QTYPE is CNAME or ANY
...
The synthesised CNAME is not supposed to be followed when the
QTYPE is CNAME or ANY as the lookup is satisfied by the CNAME
record.
2020-12-01 11:46:32 -08:00
Mark Andrews
0720c50351
Merge branch '2315-bind-9-11-22-9-11-25-fails-to-build-for-aep-hsm-native-pkcs11-v9_11' into 'v9_11'
...
Resolve "BIND 9.11.22 - 9.11.25 fails to build for AEP HSM native pkcs11"
See merge request isc-projects/bind9!4446
2020-12-01 13:51:40 +00:00
Mark Andrews
b578dd70d9
Add release note for [GL #2315 ]
...
(cherry picked from commit 356243aaec )
2020-12-01 23:31:16 +11:00
Mark Andrews
f9f8dc24e0
Add CHANGES
...
(cherry picked from commit 11a3545e32 )
2020-12-01 23:19:46 +11:00
Mark Andrews
0e7a4169bd
Fix misplaced declaration
...
(cherry picked from commit 49b9219bb3 )
2020-12-01 23:19:46 +11:00
Michał Kępień
319b718638
Merge branch '2310-make-docbook-sources-namespaced-again' into 'v9_11'
...
Make DocBook sources namespaced again
See merge request isc-projects/bind9!4440
2020-11-30 08:35:49 +00:00
Michał Kępień
dfdd3a8a2f
Make DocBook sources namespaced again
...
Every DocBook source document can be namespaced (DocBook 5) or
non-namespaced (DocBook 4). The set of XSL stylesheets used for
producing an output document can also be namespaced or non-namespaced.
Namespaced source documents should be used with namespaced stylesheets
and non-namespaced source documents should be used with non-namespaced
stylesheets. However, both stylesheet flavors contain processing rules
which allow them to be used interchangeably for any type of source
document.
Unfortunately, these processing rules became broken in version 1.79.1 of
the stylesheets, which means that non-namespaced source documents can no
longer be correctly transformed into man pages using namespaced
stylesheets and vice versa. This problem was fixed upstream [1], but no
released version of the XSL stylesheets contains that fix yet.
Back in 2016, this problem was reported as RT #43831 and allegedly fixed
in commit 1b8ce3b330 . However, that fix
only helped for the non-namespaced version of the stylesheets - while
also breaking man page generation for the namespaced flavor.
Since using namespaced DocBook sources is the current best practice
(DocBook 5), make BIND DocBook sources namespaced again. When using
version 1.79.1 or 1.79.2 of the XSL stylesheets, care must be taken to
ensure namespaced stylesheets are used for generating BIND
documentation.
[1] https://github.com/docbook/xslt10-stylesheets/issues/109
2020-11-30 09:33:32 +01:00
Mark Andrews
31a35b9364
Merge branch '2275-tighten-dns-cookie-response-handling-v9_11' into 'v9_11'
...
Resolve "Tighten DNS COOKIE response handling"
See merge request isc-projects/bind9!4439
2020-11-26 23:35:55 +00:00
Mark Andrews
21caa1bd21
Add release note for [GL #2275 ]
...
(cherry picked from commit d0dd71380b )
2020-11-27 10:20:40 +11:00
Mark Andrews
f9de8808a2
Add CHANGES note for [GL #2275 ]
...
(cherry picked from commit 15e7a4b047 )
2020-11-27 10:20:40 +11:00
Mark Andrews
28f1cbb007
Add comment about cookie sizes
...
(cherry picked from commit 304df53991 )
2020-11-27 10:20:40 +11:00
Mark Andrews
81e5877520
Check that missing cookies are handled
...
(cherry picked from commit bd9155590e )
2020-11-27 10:20:40 +11:00
Mark Andrews
cdf73095ab
Tighten DNS COOKIE response handling
...
Fallback to TCP when we have already seen a DNS COOKIE response
from the given address and don't have one in this UDP response. This
could be a server that has turned off DNS COOKIE support, a
misconfigured anycast server with partial DNS COOKIE support, or a
spoofed response. Falling back to TCP is the correct behaviour in
all 3 cases.
(cherry picked from commit 0e3b1f5a25 )
2020-11-27 09:28:09 +11:00
Michal Nowak
d50cc1d81a
Merge branch '2224-fixup-core-back-traces-v9_11' into 'v9_11'
...
[v9_11] Resolve "Fixup core back traces."
See merge request isc-projects/bind9!4436
2020-11-26 17:41:39 +00:00
Michal Nowak
76d1c90ef7
Write traceback file to the same directory as core file
...
The traceback files could overwrite each other on systems which do not
use different core dump file names for different processes. Prevent
that by writing the traceback file to the same directory as the core
dump file.
These changes still do not prevent the operating system from overwriting
a core dump file if the same binary crashes multiple times in the same
directory and core dump files are named identically for different
processes.
(cherry picked from commit 6428fc26af )
2020-11-26 18:25:44 +01:00
Mark Andrews and Michal Nowak
43c1e5be46
Unify whitespace in bin/tests/system/run.sh
...
Replace tabs with spaces to make whitespace consistent across the entire
bin/tests/system/run.sh script.
(cherry picked from commit 0f0a006c )
2020-11-26 18:21:05 +01:00
Michal Nowak
0a5cf72042
Merge branch '1770-review-how-we-use-sys-un-h-v9_11' into 'v9_11'
...
[v9_11] Fix typo in ISC_PLAFORM_HAVESYSUNH
See merge request isc-projects/bind9!4433
2020-11-26 14:40:45 +00:00
Michal Nowak
bbed152e5d
Fix typo in ISC_PLAFORM_HAVESYSUNH
...
(cherry picked from commit 8885f4a6f7 )
2020-11-26 15:09:36 +01:00
Michał Kępień
bbec074db6
Merge branch 'michal/use-centos-6-instead-of-debian-sid-in-i386-ci-jobs' into 'v9_11'
...
Use CentOS 6 instead of Debian sid in i386 CI jobs
See merge request isc-projects/bind9!4431
2020-11-26 13:49:03 +00:00
Michał Kępień
95eec2b5a7
Use CentOS 6 instead of Debian sid in i386 CI jobs
...
Due to seccomp issues with 32-bit Debian sid Docker containers that
prevent us from easily updating the contents of the 32-bit Debian sid
Docker image, switch to CentOS 6 for building and testing 32-bit
versions of BIND in GitLab CI.
2020-11-26 13:27:08 +01:00
Michał Kępień
72ecd8803f
Merge branch 'michal/use-proper-cmocka-macros-for-pointer-checks-v9_11' into 'v9_11'
...
[v9_11] Use proper cmocka macros for pointer checks
See merge request isc-projects/bind9!4430
2020-11-26 12:25:35 +00:00
Michał Kępień
fa989e4236
Use proper cmocka macros for pointer checks
...
Make sure pointer checks in unit tests use cmocka assertion macros
dedicated for use with pointers instead of those dedicated for use with
integers or booleans.
(cherry picked from commit f440600126 )
2020-11-26 13:15:28 +01:00
Michał Kępień
5da3f59953
Merge branch 'v9_11_25-release' into 'v9_11'
...
[v9_11] Merge 9.11.25 release branch
See merge request isc-projects/bind9!4428
2020-11-26 11:39:33 +00:00
Michał Kępień
43bc51d502
Set up release notes for BIND 9.11.26
2020-11-26 12:37:08 +01:00