mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 22:15:20 +00:00
Exclude isc_mem_isovermem from ThreadSanitizer
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
This commit is contained in:
@@ -1539,7 +1539,7 @@ isc_mem_setwater(isc_mem_t *ctx0, isc_mem_water_t water, void *water_arg,
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
ISC_NO_SANITIZE_THREAD bool
|
||||
isc_mem_isovermem(isc_mem_t *ctx0) {
|
||||
REQUIRE(VALID_CONTEXT(ctx0));
|
||||
|
||||
|
Reference in New Issue
Block a user