mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-10 21:20:00 -04:00
Address race between zone_settimer and set_key_expiry_warning by
adding missing lock.
WARNING: ThreadSanitizer: data race
Read of size 4 at 0x000000000001 by thread T1 (mutexes: read M1, write M2):
#0 isc_time_isepoch lib/isc/unix/time.c:110
#1 zone_settimer lib/dns/zone.c:14649
#2 dns_zone_maintenance lib/dns/zone.c:6281
#3 dns_zonemgr_forcemaint lib/dns/zone.c:18190
#4 view_loaded server.c:9654
#5 call_loaddone lib/dns/zt.c:301
#6 doneloading lib/dns/zt.c:575
#7 zone_asyncload lib/dns/zone.c:2259
#8 task_run lib/isc/task.c:845
#9 isc_task_run lib/isc/task.c:938
#10 isc__nm_async_task lib/isc/netmgr/netmgr.c:855
#11 process_netievent lib/isc/netmgr/netmgr.c:934
#12 process_queue lib/isc/netmgr/netmgr.c:1003
#13 process_all_queues lib/isc/netmgr/netmgr.c:775
#14 async_cb lib/isc/netmgr/netmgr.c:804
#15 <null> <null>
#16 isc__trampoline_run lib/isc/trampoline.c:191
#17 <null> <null>
Previous write of size 4 at 0x000000000001 by thread T2:
#0 isc_time_set lib/isc/unix/time.c:93
#1 set_key_expiry_warning lib/dns/zone.c:6430
#2 del_sigs lib/dns/zone.c:6711
#3 zone_resigninc lib/dns/zone.c:7113
#4 zone_maintenance lib/dns/zone.c:11111
#5 zone_timer lib/dns/zone.c:14588
#6 task_run lib/isc/task.c:845
#7 isc_task_run lib/isc/task.c:938
#8 isc__nm_async_task lib/isc/netmgr/netmgr.c:855
#9 process_netievent lib/isc/netmgr/netmgr.c:934
#10 process_queue lib/isc/netmgr/netmgr.c:1003
#11 process_all_queues lib/isc/netmgr/netmgr.c:775
#12 async_cb lib/isc/netmgr/netmgr.c:804
#13 <null> <null>
#14 isc__trampoline_run lib/isc/trampoline.c:191
#15 <null> <null>
SUMMARY: ThreadSanitizer: data race lib/isc/unix/time.c:110 in isc_time_isepoch
This commit is contained in:
parent
0f47ad87c2
commit
3d66e97a28
1 changed files with 2 additions and 0 deletions
|
|
@ -6479,6 +6479,7 @@ set_key_expiry_warning(dns_zone_t *zone, isc_stdtime_t when,
|
|||
unsigned int delta;
|
||||
char timebuf[80];
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
zone->key_expiry = when;
|
||||
if (when <= now) {
|
||||
dns_zone_log(zone, ISC_LOG_ERROR,
|
||||
|
|
@ -6502,6 +6503,7 @@ set_key_expiry_warning(dns_zone_t *zone, isc_stdtime_t when,
|
|||
dns_zone_log(zone, ISC_LOG_NOTICE, "setting keywarntime to %s",
|
||||
timebuf);
|
||||
}
|
||||
UNLOCK_ZONE(zone);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in a new issue