ThreadSanitizer: lock-order-inversion (potential deadlock) - nodecount vs zone_asyncload
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=17286)
Cycle in lock order graph: M17329 (0x7b7800015018) => M35468 (0x7b50000302d0) => M17329
Mutex M35468 acquired here while holding mutex M17329 in thread T15:
#0 pthread_rwlock_rdlock <null> (named+0x442616)
#1 isc_rwlock_lock /home/ondrej/Projects/bind9/lib/isc/rwlock.c:50:3 (libisc.so.1504+0x49521)
#2 nodecount /home/ondrej/Projects/bind9/lib/dns/rbtdb.c:7637:2 (libdns.so.1505+0xe108d)
#3 dns_db_nodecount /home/ondrej/Projects/bind9/lib/dns/db.c:847:10 (libdns.so.1505+0x613ea)
#4 zone_postload /home/ondrej/Projects/bind9/lib/dns/zone.c:4570:8 (libdns.so.1505+0x1ca704)
#5 zone_load /home/ondrej/Projects/bind9/lib/dns/zone.c:2163:11 (libdns.so.1505+0x1b6ac5)
#6 zone_asyncload /home/ondrej/Projects/bind9/lib/dns/zone.c:2193:11 (libdns.so.1505+0x1b709c)
#7 dispatch /home/ondrej/Projects/bind9/lib/isc/task.c:1134:7 (libisc.so.1504+0x52007)
#8 run /home/ondrej/Projects/bind9/lib/isc/task.c:1319:2 (libisc.so.1504+0x4f3a8)
Mutex M17329 previously acquired by the same thread here:
#0 pthread_mutex_lock <null> (named+0x45e376)
#1 zone_asyncload /home/ondrej/Projects/bind9/lib/dns/zone.c:2192:2 (libdns.so.1505+0x1b704b)
#2 dispatch /home/ondrej/Projects/bind9/lib/isc/task.c:1134:7 (libisc.so.1504+0x52007)
#3 run /home/ondrej/Projects/bind9/lib/isc/task.c:1319:2 (libisc.so.1504+0x4f3a8)
Mutex M17329 acquired here while holding mutex M35468 in thread T13:
#0 pthread_mutex_lock <null> (named+0x45e376)
#1 zone_nsec3chain /home/ondrej/Projects/bind9/lib/dns/zone.c:7991:3 (libdns.so.1505+0x1e6bdb)
#2 zone_maintenance /home/ondrej/Projects/bind9/lib/dns/zone.c:10819:4 (libdns.so.1505+0x1e074b)
#3 zone_timer /home/ondrej/Projects/bind9/lib/dns/zone.c:13650:2 (libdns.so.1505+0x1c4faa)
#4 dispatch /home/ondrej/Projects/bind9/lib/isc/task.c:1134:7 (libisc.so.1504+0x52007)
#5 run /home/ondrej/Projects/bind9/lib/isc/task.c:1319:2 (libisc.so.1504+0x4f3a8)
Mutex M35468 previously acquired by the same thread here:
#0 pthread_rwlock_rdlock <null> (named+0x442616)
#1 isc_rwlock_lock /home/ondrej/Projects/bind9/lib/isc/rwlock.c:50:3 (libisc.so.1504+0x49521)
#2 resume_iteration /home/ondrej/Projects/bind9/lib/dns/rbtdb.c:8946:2 (libdns.so.1505+0xf01fb)
#3 dbiterator_next /home/ondrej/Projects/bind9/lib/dns/rbtdb.c:9223:3 (libdns.so.1505+0xef82a)
#4 dns_dbiterator_next /home/ondrej/Projects/bind9/lib/dns/dbiterator.c:88:10 (libdns.so.1505+0x62974)
#5 zone_nsec3chain /home/ondrej/Projects/bind9/lib/dns/zone.c:8127:13 (libdns.so.1505+0x1e6f60)
#6 zone_maintenance /home/ondrej/Projects/bind9/lib/dns/zone.c:10819:4 (libdns.so.1505+0x1e074b)
#7 zone_timer /home/ondrej/Projects/bind9/lib/dns/zone.c:13650:2 (libdns.so.1505+0x1c4faa)
#8 dispatch /home/ondrej/Projects/bind9/lib/isc/task.c:1134:7 (libisc.so.1504+0x52007)
#9 run /home/ondrej/Projects/bind9/lib/isc/task.c:1319:2 (libisc.so.1504+0x4f3a8)
Thread T15 'isc-worker0006' (tid=17315, running) created by main thread at:
#0 pthread_create <null> (named+0x44011b)
#1 isc_thread_create /home/ondrej/Projects/bind9/lib/isc/pthreads/thread.c:75:8 (libisc.so.1504+0x6a9ea)
#2 isc_taskmgr_create /home/ondrej/Projects/bind9/lib/isc/task.c:1410:3 (libisc.so.1504+0x4f1b2)
#3 create_managers /home/ondrej/Projects/bind9/bin/named/./main.c:902:11 (named+0x4db206)
#4 setup /home/ondrej/Projects/bind9/bin/named/./main.c:1235:11 (named+0x4d98fe)
#5 main /home/ondrej/Projects/bind9/bin/named/./main.c:1515:2 (named+0x4d85c2)
Thread T13 'isc-worker0004' (tid=17313, running) created by main thread at:
#0 pthread_create <null> (named+0x44011b)
#1 isc_thread_create /home/ondrej/Projects/bind9/lib/isc/pthreads/thread.c:75:8 (libisc.so.1504+0x6a9ea)
#2 isc_taskmgr_create /home/ondrej/Projects/bind9/lib/isc/task.c:1410:3 (libisc.so.1504+0x4f1b2)
#3 create_managers /home/ondrej/Projects/bind9/bin/named/./main.c:902:11 (named+0x4db206)
#4 setup /home/ondrej/Projects/bind9/bin/named/./main.c:1235:11 (named+0x4d98fe)
#5 main /home/ondrej/Projects/bind9/bin/named/./main.c:1515:2 (named+0x4d85c2)
SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) (/home/ondrej/Projects/bind9/bin/named/.libs/named+0x442616) in pthread_rwlock_rdlock