TSAN-found data races in rbtdb
There are a few of them:
- rbtnode->data seems to be not properly locked in multiple places, but the write seems to be always here:
Write of size 8 at 0x7f44a5c850e0 by thread T7 (mutexes: write M172679898870131576, write M105125852919941584):
#0 add32 /home/wpk/dev/isc/bind9/lib/dns/rbtdb.c:6299:18 (named+0x7cafa4)
#1 addrdataset /home/wpk/dev/isc/bind9/lib/dns/rbtdb.c:6628:12 (named+0x7bf897)
#2 dns_db_addrdataset /home/wpk/dev/isc/bind9/lib/dns/db.c:746:10 (named+0x68dd94)
#3 cache_name /home/wpk/dev/isc/bind9/lib/dns/resolver.c:6293:13 (named+0x92a8b8)
#4 cache_message /home/wpk/dev/isc/bind9/lib/dns/resolver.c:6390:14 (named+0x91cee1)
#5 resquery_response /home/wpk/dev/isc/bind9/lib/dns/resolver.c:7629:12 (named+0x916b3a)
#6 dispatch /home/wpk/dev/isc/bind9/lib/isc/task.c:1130:7 (named+0xb58b36)
#7 run /home/wpk/dev/isc/bind9/lib/isc/task.c:1297:2 (named+0xb51bcb)
Previous read of size 8 at 0x7f44a5c850e0 by thread T8 (mutexes: write M1097325472244832072, read M100907974478266576):
#0 dns_rbt_findnode /home/wpk/dev/isc/bind9/lib/dns/rbt.c:1659:9 (named+0x7a19de)
#1 cache_find /home/wpk/dev/isc/bind9/lib/dns/rbtdb.c:4739:11 (named+0x7b9608)
#2 dns_db_find /home/wpk/dev/isc/bind9/lib/dns/db.c:513:11 (named+0x68bbd9)
#3 dns_view_find /home/wpk/dev/isc/bind9/lib/dns/view.c:1081:11 (named+0x9bedd2)
#4 dbfind_name /home/wpk/dev/isc/bind9/lib/dns/adb.c:3693:11 (named+0x647bc7)
#5 dns_adb_createfind /home/wpk/dev/isc/bind9/lib/dns/adb.c:3049:12 (named+0x643c8f)
#6 findname /home/wpk/dev/isc/bind9/lib/dns/resolver.c:3363:11 (named+0x90c735)
#7 fctx_getaddresses /home/wpk/dev/isc/bind9/lib/dns/resolver.c:3652:3 (named+0x9059e6)
#8 fctx_try /home/wpk/dev/isc/bind9/lib/dns/resolver.c:4013:12 (named+0x8ffe1a)
#9 resume_qmin /home/wpk/dev/isc/bind9/lib/dns/resolver.c:4214:2 (named+0x907acf)
#10 dispatch /home/wpk/dev/isc/bind9/lib/isc/task.c:1130:7 (named+0xb58b36)
#11 run /home/wpk/dev/isc/bind9/lib/isc/task.c:1297:2 (named+0xb51bcb)
- rdataset->attributes
Write of size 4 at 0x7f4cc1089198 by thread T9 (mutexes: read M87960160366493904, read M90207679154276256):
#0 bind_rdataset /home/wpk/dev/isc/bind9/lib/dns/rbtdb.c:2987:33 (named+0x7cc91a)
#1 find_deepest_zonecut /home/wpk/dev/isc/bind9/lib/dns/rbtdb.c:4562:4 (named+0x7e27d3)
#2 cache_find /home/wpk/dev/isc/bind9/lib/dns/rbtdb.c:4757:13 (named+0x7b96e0)
#3 dns_db_findext /home/wpk/dev/isc/bind9/lib/dns/db.c:553:11 (named+0x68c27d)
#4 query_lookup /home/wpk/dev/isc/bind9/lib/ns/query.c:5377:11 (named+0x5ca206)
#5 ns__query_start /home/wpk/dev/isc/bind9/lib/ns/query.c:5303:10 (named+0x5c7016)
#6 query_setup /home/wpk/dev/isc/bind9/lib/ns/query.c:5024:11 (named+0x5d1246)
#7 ns_query_start /home/wpk/dev/isc/bind9/lib/ns/query.c:11020:8 (named+0x5d02ad)
#8 ns__client_request /home/wpk/dev/isc/bind9/lib/ns/client.c:2823:3 (named+0x5a7c20)
#9 dispatch /home/wpk/dev/isc/bind9/lib/isc/task.c:1130:7 (named+0xb58b36)
#10 run /home/wpk/dev/isc/bind9/lib/isc/task.c:1297:2 (named+0xb51bcb)
Previous write of size 4 at 0x7f4cc1089198 by thread T10 (mutexes: read M87960160366493904, read M90207679154276256):
#0 bind_rdataset /home/wpk/dev/isc/bind9/lib/dns/rbtdb.c:2987:33 (named+0x7cc91a)
#1 find_deepest_zonecut /home/wpk/dev/isc/bind9/lib/dns/rbtdb.c:4562:4 (named+0x7e27d3)
#2 cache_find /home/wpk/dev/isc/bind9/lib/dns/rbtdb.c:4757:13 (named+0x7b96e0)
#3 dns_db_findext /home/wpk/dev/isc/bind9/lib/dns/db.c:553:11 (named+0x68c27d)
#4 query_lookup /home/wpk/dev/isc/bind9/lib/ns/query.c:5377:11 (named+0x5ca206)
#5 ns__query_start /home/wpk/dev/isc/bind9/lib/ns/query.c:5303:10 (named+0x5c7016)
#6 query_setup /home/wpk/dev/isc/bind9/lib/ns/query.c:5024:11 (named+0x5d1246)
#7 ns_query_start /home/wpk/dev/isc/bind9/lib/ns/query.c:11020:8 (named+0x5d02ad)
#8 ns__client_request /home/wpk/dev/isc/bind9/lib/ns/client.c:2823:3 (named+0x5a7c20)
#9 dispatch /home/wpk/dev/isc/bind9/lib/isc/task.c:1130:7 (named+0xb58b36)
#10 run /home/wpk/dev/isc/bind9/lib/isc/task.c:1297:2 (named+0xb51bcb)
- header->attributes
WARNING: ThreadSanitizer: data race (pid=9918)
Write of size 2 at 0x7f705a9c901c by thread T11 (mutexes: read M86271463406698704, read M87955879340590848):
#0 check_stale_header /home/wpk/dev/isc/bind9/lib/dns/rbtdb.c:4345:23 (named+0x7e2f27)
#1 cache_find /home/wpk/dev/isc/bind9/lib/dns/rbtdb.c:4796:7 (named+0x7b99ab)
#2 dns_db_findext /home/wpk/dev/isc/bind9/lib/dns/db.c:553:11 (named+0x68c27d)
#3 query_lookup /home/wpk/dev/isc/bind9/lib/ns/query.c:5377:11 (named+0x5ca206)
#4 query_zone_delegation /home/wpk/dev/isc/bind9/lib/ns/query.c:7745:11 (named+0x600013)
#5 query_delegation /home/wpk/dev/isc/bind9/lib/ns/query.c:7771:11 (named+0x5d9244)
#6 query_gotanswer /home/wpk/dev/isc/bind9/lib/ns/query.c:6624:11 (named+0x5d339d)
#7 query_lookup /home/wpk/dev/isc/bind9/lib/ns/query.c:5429:10 (named+0x5ca8e5)
#8 ns__query_start /home/wpk/dev/isc/bind9/lib/ns/query.c:5303:10 (named+0x5c7016)
#9 query_setup /home/wpk/dev/isc/bind9/lib/ns/query.c:5024:11 (named+0x5d1246)
#10 ns_query_start /home/wpk/dev/isc/bind9/lib/ns/query.c:11020:8 (named+0x5d02ad)
#11 ns__client_request /home/wpk/dev/isc/bind9/lib/ns/client.c:2823:3 (named+0x5a7c20)
#12 dispatch /home/wpk/dev/isc/bind9/lib/isc/task.c:1130:7 (named+0xb58b36)
#13 run /home/wpk/dev/isc/bind9/lib/isc/task.c:1297:2 (named+0xb51bcb)
Previous read of size 2 at 0x7f705a9c901c by thread T2:
#0 rdataset_getownercase /home/wpk/dev/isc/bind9/lib/dns/rbtdb.c:9478:7 (named+0x7d0287)
#1 dns_rdataset_getownercase /home/wpk/dev/isc/bind9/lib/dns/rdataset.c:723:3 (named+0x8df849)
#2 towiresorted /home/wpk/dev/isc/bind9/lib/dns/rdataset.c:460:2 (named+0x8dd12f)
#3 dns_rdataset_towiresorted /home/wpk/dev/isc/bind9/lib/dns/rdataset.c:568:10 (named+0x8dc55e)
#4 dns_message_rendersection /home/wpk/dev/isc/bind9/lib/dns/message.c:2080:15 (named+0x726f44)
#5 client_send /home/wpk/dev/isc/bind9/lib/ns/client.c:1166:11 (named+0x59e3bb)
#6 ns_client_send /home/wpk/dev/isc/bind9/lib/ns/client.c:1390:2 (named+0x59ce12)
#7 query_send /home/wpk/dev/isc/bind9/lib/ns/query.c:563:2 (named+0x5cec23)
#8 ns_query_done /home/wpk/dev/isc/bind9/lib/ns/query.c:10617:2 (named+0x5c840d)
#9 query_respond /home/wpk/dev/isc/bind9/lib/ns/query.c:7174:10 (named+0x5f3ef3)
#10 query_prepresponse /home/wpk/dev/isc/bind9/lib/ns/query.c:9642:10 (named+0x5d8217)
#11 query_gotanswer /home/wpk/dev/isc/bind9/lib/ns/query.c:6612:11 (named+0x5d3279)
#12 query_lookup /home/wpk/dev/isc/bind9/lib/ns/query.c:5429:10 (named+0x5ca8e5)
#13 query_gotanswer /home/wpk/dev/isc/bind9/lib/ns/query.c:6672:12 (named+0x5d379c)
#14 query_resume /home/wpk/dev/isc/bind9/lib/ns/query.c:5937:10 (named+0x60ac62)
#15 fetch_callback /home/wpk/dev/isc/bind9/lib/ns/query.c:5511:12 (named+0x5cc373)
#16 dispatch /home/wpk/dev/isc/bind9/lib/isc/task.c:1130:7 (named+0xb58b36)
#17 run /home/wpk/dev/isc/bind9/lib/isc/task.c:1297:2 (named+0xb51bcb)