Skip to content
  • Ondřej Surý's avatar
    Exclude isc_mem_isovermem from ThreadSanitizer · 0110d1ab
    Ondřej Surý authored and Ondřej Surý's avatar Ondřej Surý committed
    The .is_overmem member of isc_mem_t structure is intentionally accessed
    unlocked as 100% accuracy isn't necessary here.
    
    Without the attribute, following TSAN warning would show up:
    
        WARNING: ThreadSanitizer: data race
          Write of size 1 at 0x000000000001 by thread T1 (mutexes: write M1, write M2):
    	#0 isc___mem_put lib/isc/mem.c:1119:19
    	#1 isc__mem_put lib/isc/mem.c:2439:2
    	#2 dns_rdataslab_fromrdataset lib/dns/rdataslab.c:327:2
    	#3 addrdataset lib/dns/rbtdb.c:6761:11
    	#4 dns_db_addrdataset lib/dns/db.c:719:10
    	#5 cache_name lib/dns/resolver.c:6538:13
    	#6 cache_message lib/dns/resolver.c:6628:14
    	#7 resquery_response lib/dns/resolver.c:7883:13
    	#8 dispatch lib/isc/task.c:1152:7
    	#9 run lib/isc/task.c:1344:2
    
          Previous read of size 1 at 0x000000000001 by thread T2 (mutexes: write M3):
    	#0 isc_mem_isovermem lib/isc/mem.c:1553:15
    	#1 addrdataset lib/dns/rbtdb.c:6866:25
    	#2 dns_db_addrdataset lib/dns/db.c:719:10
    	#3 addoptout lib/dns/ncache.c:281:10
    	#4 dns_ncache_add lib/dns/ncache.c:101:10
    	#5 ncache_adderesult lib/dns/resolver.c:6668:12
    	#6 ncache_message lib/dns/resolver.c:6845:11
    	#7 rctx_ncache lib/dns/resolver.c:9174:11
    	#8 resquery_response lib/dns/resolver.c:7894:2
    	#9 dispatch lib/isc/task.c:1152:7
    	#10 run lib/isc/task.c:1344:2
    
          Location is heap block of size 328 at 0x000000000020 allocated by thread T3:
    	#0 malloc <null>
    	#1 default_memalloc lib/isc/mem.c:713:8
    	#2 mem_create lib/isc/mem.c:763:8
    	#3 isc_mem_create lib/isc/mem.c:2425:2
    	#4 configure_view bin/named/server.c:4494:4
    	#5 load_configuration bin/named/server.c:9062:3
    	#6 run_server bin/named/server.c:9771:2
    	#7 dispatch lib/isc/task.c:1152:7
    	#8 run lib/isc/task.c:1344:2
    
        [...]
    
        SUMMARY: ThreadSanitizer: data race lib/isc/mem.c:1119:19 in isc___mem_put
    0110d1ab