Skip to content
  • Mark Andrews's avatar
    Address lock order inversions. · 9bd58a1c
    Mark Andrews authored
        WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock)
        Cycle in lock order graph: M1 (0x000000000000) => M2 (0x000000000000) => M1
    
        Mutex M2 acquired here while holding mutex M1 in thread T1:
        #0 pthread_mutex_lock <null>
        #1 dns_view_findzonecut lib/dns/view.c:1310:2
        #2 fctx_create lib/dns/resolver.c:5070:13
        #3 dns_resolver_createfetch lib/dns/resolver.c:10813:12
        #4 dns_resolver_prime lib/dns/resolver.c:10442:12
        #5 dns_view_find lib/dns/view.c:1176:4
        #6 dbfind_name lib/dns/adb.c:3833:11
        #7 dns_adb_createfind lib/dns/adb.c:3155:12
        #8 findname lib/dns/resolver.c:3497:11
        #9 fctx_getaddresses lib/dns/resolver.c:3808:3
        #10 fctx_try lib/dns/resolver.c:4197:12
        #11 fctx_start lib/dns/resolver.c:4824:4
        #12 dispatch lib/isc/task.c:1152:7
        #13 run lib/isc/task.c:1344:2
    
        Mutex M1 previously acquired by the same thread here:
        #0 pthread_mutex_lock <null>
        #1 dns_resolver_createfetch lib/dns/resolver.c:10767:2
        #2 dns_resolver_prime lib/dns/resolver.c:10442:12
        #3 dns_view_find lib/dns/view.c:1176:4
        #4 dbfind_name lib/dns/adb.c:3833:11
        #5 dns_adb_createfind lib/dns/adb.c:3155:12
        #6 findname lib/dns/resolver.c:3497:11
        #7 fctx_getaddresses lib/dns/resolver.c:3808:3
        #8 fctx_try lib/dns/resolver.c:4197:12
        #9 fctx_start lib/dns/resolver.c:4824:4
        #10 dispatch lib/isc/task.c:1152:7
        #11 run lib/isc/task.c:1344:2
    
        Mutex M1 acquired here while holding mutex M2 in thread T1:
        #0 pthread_mutex_lock <null>
        #1 dns_resolver_shutdown lib/dns/resolver.c:10530:4
        #2 view_flushanddetach lib/dns/view.c:632:4
        #3 dns_view_detach lib/dns/view.c:689:2
        #4 qctx_destroy lib/ns/query.c:5152:2
        #5 fetch_callback lib/ns/query.c:5749:3
        #6 dispatch lib/isc/task.c:1152:7
        #7 run lib/isc/task.c:1344:2
    
        Mutex M2 previously acquired by the same thread here:
        #0 pthread_mutex_lock <null>
        #1 view_flushanddetach lib/dns/view.c:630:3
        #2 dns_view_detach lib/dns/view.c:689:2
        #3 qctx_destroy lib/ns/query.c:5152:2
        #4 fetch_callback lib/ns/query.c:5749:3
        #5 dispatch lib/isc/task.c:1152:7
        #6 run lib/isc/task.c:1344:2
    
        Thread T1 (running) created by main thread at:
        #0 pthread_create <null>
        #1 isc_thread_create lib/isc/pthreads/thread.c:73:8
        #2 isc_taskmgr_create lib/isc/task.c:1434:3
        #3 create_managers bin/named/main.c:915:11
        #4 setup bin/named/main.c:1223:11
        #5 main bin/named/main.c:1523:2
    
        SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) in pthread_mutex_lock
    
    (cherry picked from commit a669c919)
    9bd58a1c