ThreadSanitizer: lock-order-inversion (potential deadlock) - dns_keytable_find vs resume_iteration
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=1260)
Cycle in lock order graph: M340438830370852048 (0x000000000000) => M417844242807813680 (0x000000000000) => M340438830370852048
Mutex M417844242807813680 acquired here while holding mutex M340438830370852048 in thread T9:
#0 pthread_rwlock_rdlock <null> (libtsan.so.0+0x2cf99)
#1 isc_rwlock_lock /home/ondrej/Projects/bind9/lib/isc/rwlock.c:50 (libisc.so.1504+0x52197)
#2 dns_keytable_find /home/ondrej/Projects/bind9/lib/dns/keytable.c:479 (libdns.so.1505+0x9c179)
#3 sync_keyzone /home/ondrej/Projects/bind9/lib/dns/zone.c:4362 (libdns.so.1505+0x2279b5)
#4 zone_postload /home/ondrej/Projects/bind9/lib/dns/zone.c:4879 (libdns.so.1505+0x24d51a)
#5 zone_load /home/ondrej/Projects/bind9/lib/dns/zone.c:2163 (libdns.so.1505+0x251499)
#6 dns_zone_load /home/ondrej/Projects/bind9/lib/dns/zone.c:2177 (libdns.so.1505+0x251b31)
#7 load_zones server.c:9548 (named+0x2e61a)
#8 run_server server.c:9657 (named+0x59a5a)
#9 dispatch /home/ondrej/Projects/bind9/lib/isc/task.c:1134 (libisc.so.1504+0x56fa6)
#10 run /home/ondrej/Projects/bind9/lib/isc/task.c:1319 (libisc.so.1504+0x56fa6)
#11 <null> <null> (libtsan.so.0+0x29b3d)
Mutex M340438830370852048 previously acquired by the same thread here:
#0 pthread_rwlock_rdlock <null> (libtsan.so.0+0x2cf99)
#1 isc_rwlock_lock /home/ondrej/Projects/bind9/lib/isc/rwlock.c:50 (libisc.so.1504+0x52197)
#2 resume_iteration /home/ondrej/Projects/bind9/lib/dns/rbtdb.c:8946 (libdns.so.1505+0x11dc47)
#3 dbiterator_first /home/ondrej/Projects/bind9/lib/dns/rbtdb.c:8993 (libdns.so.1505+0x11dc47)
#4 dns_dbiterator_first /home/ondrej/Projects/bind9/lib/dns/dbiterator.c:44 (libdns.so.1505+0x69316)
#5 dns_rriterator_first /home/ondrej/Projects/bind9/lib/dns/rriterator.c:69 (libdns.so.1505+0x1c002a)
#6 sync_keyzone /home/ondrej/Projects/bind9/lib/dns/zone.c:4344 (libdns.so.1505+0x22788d)
#7 zone_postload /home/ondrej/Projects/bind9/lib/dns/zone.c:4879 (libdns.so.1505+0x24d51a)
#8 zone_load /home/ondrej/Projects/bind9/lib/dns/zone.c:2163 (libdns.so.1505+0x251499)
#9 dns_zone_load /home/ondrej/Projects/bind9/lib/dns/zone.c:2177 (libdns.so.1505+0x251b31)
#10 load_zones server.c:9548 (named+0x2e61a)
#11 run_server server.c:9657 (named+0x59a5a)
#12 dispatch /home/ondrej/Projects/bind9/lib/isc/task.c:1134 (libisc.so.1504+0x56fa6)
#13 run /home/ondrej/Projects/bind9/lib/isc/task.c:1319 (libisc.so.1504+0x56fa6)
#14 <null> <null> (libtsan.so.0+0x29b3d)
Mutex M340438830370852048 acquired here while holding mutex M417844242807813680 in thread T9:
#0 pthread_rwlock_rdlock <null> (libtsan.so.0+0x2cf99)
#1 isc_rwlock_lock /home/ondrej/Projects/bind9/lib/isc/rwlock.c:50 (libisc.so.1504+0x52197)
#2 zone_find /home/ondrej/Projects/bind9/lib/dns/rbtdb.c:3860 (libdns.so.1505+0x11efe0)
#3 dns_db_find /home/ondrej/Projects/bind9/lib/dns/db.c:511 (libdns.so.1505+0x6648d)
#4 addifmissing /home/ondrej/Projects/bind9/lib/dns/zone.c:4281 (libdns.so.1505+0x226c84)
#5 dns_keytable_forall /home/ondrej/Projects/bind9/lib/dns/keytable.c:901 (libdns.so.1505+0x9a9ff)
#6 sync_keyzone /home/ondrej/Projects/bind9/lib/dns/zone.c:4388 (libdns.so.1505+0x227f70)
#7 zone_postload /home/ondrej/Projects/bind9/lib/dns/zone.c:4879 (libdns.so.1505+0x24d51a)
#8 zone_load /home/ondrej/Projects/bind9/lib/dns/zone.c:2163 (libdns.so.1505+0x251499)
#9 dns_zone_load /home/ondrej/Projects/bind9/lib/dns/zone.c:2177 (libdns.so.1505+0x251b31)
#10 load_zones server.c:9548 (named+0x2e61a)
#11 run_server server.c:9657 (named+0x59a5a)
#12 dispatch /home/ondrej/Projects/bind9/lib/isc/task.c:1134 (libisc.so.1504+0x56fa6)
#13 run /home/ondrej/Projects/bind9/lib/isc/task.c:1319 (libisc.so.1504+0x56fa6)
#14 <null> <null> (libtsan.so.0+0x29b3d)
Mutex M417844242807813680 previously acquired by the same thread here:
#0 pthread_rwlock_rdlock <null> (libtsan.so.0+0x2cf99)
#1 isc_rwlock_lock /home/ondrej/Projects/bind9/lib/isc/rwlock.c:50 (libisc.so.1504+0x52197)
#2 dns_keytable_forall /home/ondrej/Projects/bind9/lib/dns/keytable.c:885 (libdns.so.1505+0x9a89a)
#3 sync_keyzone /home/ondrej/Projects/bind9/lib/dns/zone.c:4388 (libdns.so.1505+0x227f70)
#4 zone_postload /home/ondrej/Projects/bind9/lib/dns/zone.c:4879 (libdns.so.1505+0x24d51a)
#5 zone_load /home/ondrej/Projects/bind9/lib/dns/zone.c:2163 (libdns.so.1505+0x251499)
#6 dns_zone_load /home/ondrej/Projects/bind9/lib/dns/zone.c:2177 (libdns.so.1505+0x251b31)
#7 load_zones server.c:9548 (named+0x2e61a)
#8 run_server server.c:9657 (named+0x59a5a)
#9 dispatch /home/ondrej/Projects/bind9/lib/isc/task.c:1134 (libisc.so.1504+0x56fa6)
#10 run /home/ondrej/Projects/bind9/lib/isc/task.c:1319 (libisc.so.1504+0x56fa6)
#11 <null> <null> (libtsan.so.0+0x29b3d)
Thread T9 'isc-worker0000' (tid=1327, running) created by main thread at:
#0 pthread_create <null> (libtsan.so.0+0x2be1b)
#1 isc_thread_create /home/ondrej/Projects/bind9/lib/isc/pthreads/thread.c:75 (libisc.so.1504+0x7bcc4)
#2 isc_taskmgr_create /home/ondrej/Projects/bind9/lib/isc/task.c:1410 (libisc.so.1504+0x59d63)
#3 create_managers main.c:902 (named+0x1aeec)
#4 setup main.c:1235 (named+0x1aeec)
#5 main main.c:1515 (named+0x1aeec)
SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x2cf99) in pthread_rwlock_rdlock