ISC Open Source Projects issues
https://gitlab.isc.org/groups/isc-projects/-/issues
2023-10-12T09:37:12Z
https://gitlab.isc.org/isc-projects/bind9/-/issues/4354
Checking zone transfer information in the statistics channel fails on OpenBSD
2023-10-12T09:37:12Z
Michal Nowak
Checking zone transfer information in the statistics channel fails on OpenBSD
Job [\#3693319](https://gitlab.isc.org/isc-projects/bind9/-/jobs/3693319) failed for 23b52fb6a04e49f079942bb23ad4a5f0fb13e8da.
There's a permanent test failure in the `statschannel` system test on OpenBSD on `main` after e92d1eeafca6e5a...
Job [\#3693319](https://gitlab.isc.org/isc-projects/bind9/-/jobs/3693319) failed for 23b52fb6a04e49f079942bb23ad4a5f0fb13e8da.
There's a permanent test failure in the `statschannel` system test on OpenBSD on `main` after e92d1eeafca6e5a75299bff6a90ce37848409e85 got merged, specifically the `Checking zone transfer information in the statistics channel` check (that worked before the change) and the `Checking zone transfer transports` check (that was added in the change).
```plaintext
2023-10-03 00:23:55 INFO:statschannel I:statschannel_tmp_2s8p6u20:Checking zone transfer information in the statistics channel (25)
2023-10-03 00:23:55 INFO:statschannel I:statschannel_tmp_2s8p6u20:... using xml
2023-10-03 00:23:56 INFO:statschannel I:statschannel_tmp_2s8p6u20:... using json
...
2023-10-03 00:25:28 INFO:statschannel I:statschannel_tmp_2s8p6u20:... using xml
2023-10-03 00:25:28 INFO:statschannel I:statschannel_tmp_2s8p6u20:... using json
2023-10-03 00:25:28 INFO:statschannel I:statschannel_tmp_2s8p6u20:failed
```
```plaintext
2023-10-03 00:25:28 INFO:statschannel I:statschannel_tmp_2s8p6u20:Checking zone transfer transports (26)
2023-10-03 00:25:28 INFO:statschannel cmp: EOF on xfrins.example.format26
2023-10-03 00:25:28 INFO:statschannel cmp: EOF on xfrins.example-tcp.format26
2023-10-03 00:25:28 INFO:statschannel cmp: EOF on xfrins.example-tls.format26
2023-10-03 00:25:28 INFO:statschannel I:statschannel_tmp_2s8p6u20:failed
```
[xfrins.xml.x25](/uploads/fb7a275e22d23fbe33fa5f158cafd91d/xfrins.xml.x25)
[xfrins.json.j26](/uploads/9e3c39332724d734cd6cb96fcfca3555/xfrins.json.j26)
[xfrins.json.j25](/uploads/b0f3f858e762257000fe4293140b890e/xfrins.json.j25)
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
Arаm Sаrgsyаn
Arаm Sаrgsyаn
https://gitlab.isc.org/isc-projects/bind9/-/issues/4340
"max-cache-size" is a no-op since BIND 9.19.16
2023-11-27T13:22:48Z
Michał Kępień
"max-cache-size" is a no-op since BIND 9.19.16
Commit 4db150437e14b28c5b50ae466af9ce502fd73185 (part of !7873)
inadvertently turned the `max-cache-size` option into a no-op by
removing the `isc_mem_setwater()` call from `dns_cache_setcachesize()`.
This was not caught in testing as t...
Commit 4db150437e14b28c5b50ae466af9ce502fd73185 (part of !7873)
inadvertently turned the `max-cache-size` option into a no-op by
removing the `isc_mem_setwater()` call from `dns_cache_setcachesize()`.
This was not caught in testing as the current memory use limitation
logic employed in `named` is not stable enough for low `max-cache-size`
values (which is documented) and most tests use the implicit default of
`max-cache-size 90%;`.
Shout-out to @esesterhenn for [spotting this][1], thank you! :medal:
[1]: https://mattermost.isc.org/x41-dsec/pl/e9ja89c8at8wxpyqkjcpoukoyc
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
Evan Hunt
Evan Hunt
https://gitlab.isc.org/isc-projects/bind9/-/issues/4338
qpmulti bench is broken
2023-10-04T13:26:28Z
Ondřej Surý
qpmulti bench is broken
Somewhere along the way, we got into this:
```
0.426688 sec to create 1000000 items, 2343634.894569/sec 528000000 bytes
vary size of trie
runtime elapsed load s B/item items mut tx/loop ops/tx gc txns ops work s t...
Somewhere along the way, we got into this:
```
0.426688 sec to create 1000000 items, 2343634.894569/sec 528000000 bytes
vary size of trie
runtime elapsed load s B/item items mut tx/loop ops/tx gc txns ops work s txns/us ops/us read tx/loop ops/tx Ktxns Kops work s txns/us ops/us raw loop
0.250 0.250 0.000 32.00 10 1 4 4 0 56588 226352 0.25 0.23 0.92 31 32 32 5759 184316 7.70 0.75 23.93 741.76 737.14
0.250 0.250 0.000 17.31 100 1 4 4 36 59708 238832 0.25 0.24 0.97 31 32 32 4534 145114 7.71 0.59 18.82 583.31 580.21
0.250 0.252 0.000 14.70 1000 1 4 4 687 30656 122624 0.25 0.12 0.49 31 32 32 4347 139108 7.71 0.56 18.04 559.13 551.02
0.250 0.250 0.001 15.85 10000 1 4 4 529 14908 59632 0.25 0.06 0.24 31 32 32 3654 116945 7.72 0.47 15.15 469.75 467.65
0.250 0.250 0.015 14.82 100000 1 4 4 71 13328 53312 0.25 0.05 0.21 31 32 32 2188 70018 7.73 0.28 9.06 280.96 279.95
0.250 0.251 0.161 15.12 1000000 1 4 4 6 8272 33088 0.25 0.03 0.13 31 32 32 1109 35496 7.74 0.14 4.59 142.24 141.27
vary size of trie (readonly)
runtime elapsed load s B/item items mut tx/loop ops/tx gc txns ops work s txns/us ops/us read tx/loop ops/tx Ktxns Kops work s txns/us ops/us raw loop
qpmulti: ./src/unix/core.c:270: uv__finish_close: Assertion `handle->flags & UV_HANDLE_CLOSING' failed.
Aborted (core dumped)
```
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
Evan Hunt
Evan Hunt
https://gitlab.isc.org/isc-projects/bind9/-/issues/4335
CID 465814: Control flow issues (DEADCODE) in statschannel.c
2023-10-04T13:26:29Z
Arаm Sаrgsyаn
CID 465814: Control flow issues (DEADCODE) in statschannel.c
```
*** CID 465814: Control flow issues (DEADCODE)
/bin/named/statschannel.c: 1704 in xfrin_xmlrender()
1698
1699 cleanup:
1700 if (xfr != NULL) {
1701 dns_xfrin_detach(&xfr);
1702 }
...
```
*** CID 465814: Control flow issues (DEADCODE)
/bin/named/statschannel.c: 1704 in xfrin_xmlrender()
1698
1699 cleanup:
1700 if (xfr != NULL) {
1701 dns_xfrin_detach(&xfr);
1702 }
1703 if (result != ISC_R_SUCCESS) {
>>> CID 465814: Control flow issues (DEADCODE)
>>> Execution cannot reach this statement: "isc_log_write(named_g_lctx,...".
1704 isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
1705 NAMED_LOGMODULE_SERVER, ISC_LOG_ERROR,
1706 "Failed at xfrin_xmlrender()");
1707 }
1708 return (result);
1709 }
```
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
Arаm Sаrgsyаn
Arаm Sаrgsyаn
https://gitlab.isc.org/isc-projects/bind9/-/issues/4332
ThreadSanitizer: data race lib/dns/xfrin.c:830:15 in dns_xfrin_getendserial
2023-10-04T13:26:28Z
Arаm Sаrgsyаn
ThreadSanitizer: data race lib/dns/xfrin.c:830:15 in dns_xfrin_getendserial
A data race introduced in the development branch by a recent work in xfrin.
See https://gitlab.isc.org/isc-projects/bind9/-/jobs/3673987
```
WARNING: ThreadSanitizer: data race
Read of size 4 at 0x000000000001 by main thread:
#0...
A data race introduced in the development branch by a recent work in xfrin.
See https://gitlab.isc.org/isc-projects/bind9/-/jobs/3673987
```
WARNING: ThreadSanitizer: data race
Read of size 4 at 0x000000000001 by main thread:
#0 dns_xfrin_getendserial lib/dns/xfrin.c:830:15 (BuildId: a436a9622c5b7f074360887e81e2d47117534f02)
#1 xfrin_xmlrender bin/named/statschannel.c:1531:12 (BuildId: 417ea5308cb332d66dbff676d25ceae18ab025f1)
#2 dns_zt_apply lib/dns/zt.c:518:12 (BuildId: a436a9622c5b7f074360887e81e2d47117534f02)
#3 generatexml bin/named/statschannel.c:2011:4 (BuildId: 417ea5308cb332d66dbff676d25ceae18ab025f1)
#4 render_xml bin/named/statschannel.c:2141:11
#5 render_xml_xfrins bin/named/statschannel.c:2211:10 (BuildId: 417ea5308cb332d66dbff676d25ceae18ab025f1)
#6 prepare_response lib/isc/httpd.c:790:12 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#7 httpd_request lib/isc/httpd.c:944:2
#8 isc___nm_readcb lib/isc/netmgr/netmgr.c:1766:2 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#9 isc__nm_readcb lib/isc/netmgr/netmgr.c:1781:3
#10 isc__nm_tcp_read_cb lib/isc/netmgr/tcp.c:770:2 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#11 uv__read /usr/src/libuv-v1.46.0/src/unix/stream.c:1143:7 (BuildId: 1b5307d484d8cb99602a0a0749ea2f3df2d7d355)
#12 thread_body lib/isc/thread.c:85:8 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#13 isc_thread_main lib/isc/thread.c:116:2
#14 isc_loopmgr_run lib/isc/loop.c:454:2 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#15 main bin/named/main.c:1580:2 (BuildId: 417ea5308cb332d66dbff676d25ceae18ab025f1)
Previous write of size 4 at 0x000000000001 by thread T0001:
#0 xfr_rr lib/dns/xfrin.c:566:19 (BuildId: a436a9622c5b7f074360887e81e2d47117534f02)
#1 xfrin_recv_done lib/dns/xfrin.c:1725:5 (BuildId: a436a9622c5b7f074360887e81e2d47117534f02)
#2 tcp_recv_processall lib/dns/dispatch.c:750:3 (BuildId: a436a9622c5b7f074360887e81e2d47117534f02)
#3 tcp_recv lib/dns/dispatch.c:893:2 (BuildId: a436a9622c5b7f074360887e81e2d47117534f02)
#4 streamdns_on_complete_dnsmessage lib/isc/netmgr/streamdns.c (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#5 streamdns_on_dnsmessage_data_cb lib/isc/netmgr/streamdns.c:206:11
#6 isc__dnsstream_assembler_callcb lib/isc/./include/isc/dnsstream.h:306:8 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#7 isc__dnsstream_assembler_handle_message lib/isc/./include/isc/dnsstream.h:353:10
#8 isc__dnsstream_assembler_incoming_direct_non_empty lib/isc/./include/isc/dnsstream.h:455:10 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#9 isc_dnsstream_assembler_incoming lib/isc/./include/isc/dnsstream.h:511:14 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#10 streamdns_handle_incoming_data lib/isc/netmgr/streamdns.c:242:2
#11 streamdns_readcb lib/isc/netmgr/streamdns.c:526:2 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#12 tls_do_bio lib/isc/netmgr/tlsstream.c:667:5 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#13 tls_readcb lib/isc/netmgr/tlsstream.c:828:2 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#14 isc___nm_readcb lib/isc/netmgr/netmgr.c:1766:2 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#15 isc__nm_readcb lib/isc/netmgr/netmgr.c:1781:3
#16 isc__nm_tcp_read_cb lib/isc/netmgr/tcp.c:770:2 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#17 uv__read /usr/src/libuv-v1.46.0/src/unix/stream.c:1143:7 (BuildId: 1b5307d484d8cb99602a0a0749ea2f3df2d7d355)
#18 thread_body lib/isc/thread.c:85:8 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#19 thread_run lib/isc/thread.c:100:14
Location is heap block of size 2456 at 0x000000000026 allocated by thread T0001:
#0 malloc <null> (BuildId: 417ea5308cb332d66dbff676d25ceae18ab025f1)
#1 mallocx lib/isc/./jemalloc_shim.h:67:14 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#2 mem_get lib/isc/mem.c:305:8
#3 isc__mem_get lib/isc/mem.c:744:8 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#4 xfrin_create lib/dns/xfrin.c:987:8 (BuildId: a436a9622c5b7f074360887e81e2d47117534f02)
#5 dns_xfrin_create lib/dns/xfrin.c:726:2
#6 got_transfer_quota lib/dns/zone.c:17875:11 (BuildId: a436a9622c5b7f074360887e81e2d47117534f02)
#7 isc__async_cb lib/isc/async.c:111:3 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#8 uv__async_io /usr/src/libuv-v1.46.0/src/unix/async.c:176:5 (BuildId: 1b5307d484d8cb99602a0a0749ea2f3df2d7d355)
#9 thread_body lib/isc/thread.c:85:8 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#10 thread_run lib/isc/thread.c:100:14
Thread T0001 'isc-loop-0003' (running) created by main thread at:
#0 pthread_create <null> (BuildId: 417ea5308cb332d66dbff676d25ceae18ab025f1)
#1 isc_thread_create lib/isc/thread.c:139:8 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#2 isc_loopmgr_run lib/isc/loop.c:448:3 (BuildId: 7cc468b843634188ce4e45319f2b8b561393a8e8)
#3 main bin/named/main.c:1580:2 (BuildId: 417ea5308cb332d66dbff676d25ceae18ab025f1)
SUMMARY: ThreadSanitizer: data race lib/dns/xfrin.c:830:15 in dns_xfrin_getendserial
```
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
Arаm Sаrgsyаn
Arаm Sаrgsyаn
https://gitlab.isc.org/isc-projects/bind9/-/issues/4326
Reduce adb names locking contention
2023-11-07T09:15:39Z
Ondřej Surý
Reduce adb names locking contention
With our new userspace tracing probes, we were able to pinpoint the source of the contention:
| fn | type | count | min | max | sum | avg |
|-------------------------------|--------|-----...
With our new userspace tracing probes, we were able to pinpoint the source of the contention:
| fn | type | count | min | max | sum | avg |
|-------------------------------|--------|---------|-------|---------|-------------|---------|
| dns_adb_createfind | mutex | 1597343 | 5772 | 210015 | 10540878621 | 6599 |
| dns_adb_agesrtt | mutex | 806318 | 5772 | 236964 | 5284236828 | 6553 |
| dns__rbtdb_detachnode | rwlock | 928583 | 4290 | 310557 | 4803076356 | 5172 |
| dns_adb_destroyfind | mutex | 556873 | 5811 | 192972 | 3703797591 | 6651 |
| dns_adb_createfind | rwlock | 556873 | 4329 | 172419 | 2802134985 | 5031 |
| dns__rbtdb_addrdataset | rwlock | 462176 | 4290 | 274560 | 2295845409 | 4967 |
| cache_find | rwlock | 439323 | 4290 | 280293 | 2276739816 | 5182 |
| isc__mempool_destroy | mutex | 271276 | 5811 | 204321 | 1926270294 | 7100 |
| isc__mempool_create | mutex | 271276 | 5850 | 141609 | 1885239369 | 6949 |
| fctx_cancelqueries | mutex | 189589 | 5850 | 144027 | 1301757054 | 6866 |
| dns__rbtdb_nodefullname | rwlock | 229742 | 4368 | 187512 | 1157715000 | 5039 |
| dns_adb_getcookie | mutex | 132632 | 5928 | 139035 | 1137403254 | 8575 |
| find_deepest_zonecut | rwlock | 224027 | 4290 | 156936 | 1105641693 | 4935 |
| dns__rbtdb_findnodeintree | rwlock | 181563 | 4368 | 168246 | 948466155 | 5223 |
| reactivate_node | rwlock | 181581 | 4329 | 163917 | 928872165 | 5115 |
| dns_ntatable_covered | rwlock | 158872 | 4407 | 176280 | 857866503 | 5399 |
| fctx__done.constprop.0 | mutex | 109350 | 5889 | 122031 | 750861813 | 6866 |
| dns_adb_setudpsize | mutex | 68673 | 6318 | 222495 | 682022757 | 9931 |
| dns_adb_adjustsrtt | mutex | 80787 | 5928 | 165360 | 606351837 | 7505 |
| fctx_cancelquery | mutex | 80787 | 6006 | 141921 | 573609972 | 7100 |
| fctx_query | mutex | 80787 | 5967 | 137943 | 552959550 | 6844 |
| rctx_done | mutex | 80778 | 5889 | 118326 | 549924336 | 6807 |
| resquery_destroy | mutex | 80787 | 5850 | 129090 | 541517847 | 6703 |
| activeempty | rwlock | 107788 | 4251 | 139464 | 521984073 | 4842 |
| dns_resolver_destroyfetch | mutex | 54899 | 6006 | 126360 | 447498324 | 8151 |
| validated | mutex | 58506 | 5850 | 127608 | 442221507 | 7558 |
| fctx_start | mutex | 54666 | 5928 | 135954 | 429194220 | 7851 |
| dns_resolver_createfetch | mutex | 53692 | 6006 | 140088 | 390963261 | 7281 |
| resquery_response | mutex | 51786 | 6123 | 155922 | 382768581 | 7391 |
| dns_aclelement_match | rwlock | 62649 | 4329 | 120900 | 371844018 | 5935 |
| get_attached_fctx | mutex | 53692 | 5967 | 120627 | 367318809 | 6841 |
| fetch_callback | mutex | 49034 | 5772 | 142896 | 364519662 | 7434 |
| get_attached_and_locked_entry | mutex | 53556 | 5928 | 117000 | 361141638 | 6743 |
| zone_find | rwlock | 71262 | 4251 | 182871 | 347663121 | 4878 |
| dns__rbtdb_currentversion | rwlock | 69986 | 4368 | 111696 | 346155108 | 4946 |
| cache_findzonecut | rwlock | 64631 | 4329 | 226278 | 335597886 | 5192 |
| clean_namehooks | mutex | 51702 | 5811 | 124995 | 332844369 | 6437 |
| release_fctx | rwlock | 53459 | 4446 | 112476 | 278282199 | 5205 |
| get_attached_and_locked_entry | rwlock | 53556 | 4368 | 98592 | 271329786 | 5066 |
| get_attached_fctx | rwlock | 53692 | 4329 | 709020 | 266725095 | 4967 |
| delete_callback | rwlock | 44974 | 4368 | 49569 | 212821830 | 4732 |
| ns_query_cancel | mutex | 21337 | 6045 | 118404 | 196894893 | 9227 |
| prune_tree | rwlock | 22934 | 4290 | 94029 | 172068039 | 7502 |
| purge_stale_entries | mutex | 21807 | 5928 | 130143 | 147269265 | 6753 |
| mutex_lock | mutex | 11905 | 6006 | 1802736 | 145038075 | 12182 |
| dns_adb_changeflags | mutex | 20232 | 5889 | 110916 | 138579753 | 6849 |
| ns_client_recursing | mutex | 15949 | 6357 | 110526 | 135737472 | 8510 |
| dns_adb_setcookie | mutex | 16890 | 6084 | 139503 | 126144447 | 7468 |
| rdataset_getownercase | rwlock | 23833 | 4329 | 122538 | 125803704 | 5278 |
| cds_wfcq_dequeue_blocking | mutex | 15988 | 6240 | 187980 | 122401383 | 7655 |
| shutdown_names | mutex | 18901 | 5967 | 49569 | 121754802 | 6441 |
| clean_finds_at_name | mutex | 14878 | 5850 | 116922 | 100255584 | 6738 |
| find_coveringnsec | rwlock | 18681 | 4485 | 110487 | 100217130 | 5364 |
| resume_qmin | mutex | 12414 | 6006 | 122928 | 95990232 | 7732 |
| fctx_finddone | mutex | 12404 | 5889 | 100425 | 91508859 | 7377 |
| zone_shutdown | rwlock | 104 | 5382 | 6337149 | 90942969 | 874451 |
| dns_adb_ednsto | mutex | 9616 | 6435 | 74568 | 90021906 | 9361 |
| je_malloc_mutex_lock_slow | mutex | 32 | 18564 | 6550284 | 78068913 | 2439653 |
| dns_zonemgr_releasezone | rwlock | 208 | 4836 | 4666077 | 66756261 | 320943 |
| ns_client_qnamereplace | mutex | 7387 | 6162 | 89661 | 56466618 | 7644 |
| isc_log_doit | mutex | 3463 | 5889 | 87477 | 23883873 | 6896 |
| isc_log_doit | rwlock | 3463 | 4524 | 70863 | 20813169 | 6010 |
| dns_adb_getudpsize | mutex | 2118 | 6786 | 91767 | 20512557 | 9684 |
| destroy | mutex | 106 | 6942 | 1579539 | 16286439 | 153645 |
| zone_maintenance | mutex | 732 | 5928 | 133653 | 13287963 | 18152 |
| rdataset_settrust | rwlock | 1176 | 4446 | 48048 | 6342882 | 5393 |
| zone__settimer | mutex | 317 | 6045 | 394290 | 5682846 | 17926 |
| zone_postload | rwlock | 207 | 4680 | 67431 | 4023786 | 19438 |
| dns_adb_plainresponse | mutex | 380 | 6708 | 53859 | 4017819 | 10573 |
(The table continues with less important stuff...)
If you look closely, the cumulative time we spend in the adb mutexes is huge:
| fn | type | count | min | max | sum | avg |
|-------------------------------|--------|---------|-------|---------|-------------|---------|
| dns_adb_createfind | mutex | 1597343 | 5772 | 210015 | 10540878621 | 6599 |
| dns_adb_agesrtt | mutex | 806318 | 5772 | 236964 | 5284236828 | 6553 |
| dns_adb_destroyfind | mutex | 556873 | 5811 | 192972 | 3703797591 | 6651 |
| dns_adb_getcookie | mutex | 132632 | 5928 | 139035 | 1137403254 | 8575 |
| dns_adb_setudpsize | mutex | 68673 | 6318 | 222495 | 682022757 | 9931 |
| dns_adb_adjustsrtt | mutex | 80787 | 5928 | 165360 | 606351837 | 7505 |
| dns_adb_changeflags | mutex | 20232 | 5889 | 110916 | 138579753 | 6849 |
| dns_adb_setcookie | mutex | 16890 | 6084 | 139503 | 126144447 | 7468 |
| dns_adb_ednsto | mutex | 9616 | 6435 | 74568 | 90021906 | 9361 |
| dns_adb_getudpsize | mutex | 2118 | 6786 | 91767 | 20512557 | 9684 |
| dns_adb_plainresponse | mutex | 380 | 6708 | 53859 | 4017819 | 10573 |
This is something that is definitely worth addressing.
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
Ondřej Surý
Ondřej Surý
https://gitlab.isc.org/isc-projects/bind9/-/issues/4325
Creating and destroying pools locking is contended
2023-10-04T13:26:28Z
Ondřej Surý
Creating and destroying pools locking is contended
According to the recent measurements, the `isc_mempool_create()` and `isc_mempool_destroy()` are in the TOP 10 of most contended locks (measures as a total time waiting for a lock).
According to the recent measurements, the `isc_mempool_create()` and `isc_mempool_destroy()` are in the TOP 10 of most contended locks (measures as a total time waiting for a lock).
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
Ondřej Surý
Ondřej Surý
https://gitlab.isc.org/isc-projects/bind9/-/issues/4322
hashmap iterator can iterate twice the same item if deleting items via delcur...
2023-10-04T13:26:29Z
Ondřej Surý
hashmap iterator can iterate twice the same item if deleting items via delcurrent_next
When iterating through the hashtable that is downsizing (or upsizing), the item could move from first internal table to the second one and could be iterated twice. This usually is not a problem because we delete all or none, but in the ...
When iterating through the hashtable that is downsizing (or upsizing), the item could move from first internal table to the second one and could be iterated twice. This usually is not a problem because we delete all or none, but in the hashmap_test, we delete every second item and the non-delete item could be iterated first in the first table and then second when walking through the second table.
The other possibility of double walking the same item is when the items in the table get reordered due to psl value change.
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
Mark Andrews
Mark Andrews
https://gitlab.isc.org/isc-projects/bind9/-/issues/4211
AssertionError: named crashed, shutdown crash
2023-11-07T10:18:19Z
Michal Nowak
AssertionError: named crashed, shutdown crash
Job [#3526648](https://gitlab.isc.org/isc-projects/bind9/-/jobs/3526648) failed for dd2b7a0b2bac38b3aa1ebab58d276968504ec823.
The `shutdown` system test failed:
```
/builds/isc-projects/bind9/bin/tests/system/shutdown/tests_shutdown.py:...
Job [#3526648](https://gitlab.isc.org/isc-projects/bind9/-/jobs/3526648) failed for dd2b7a0b2bac38b3aa1ebab58d276968504ec823.
The `shutdown` system test failed:
```
/builds/isc-projects/bind9/bin/tests/system/shutdown/tests_shutdown.py:207: in test_named_shutdown
assert named_proc.returncode == 0, "named crashed"
E AssertionError: named crashed
E assert -6 == 0
E +-6
E -0
```
```
Core was generated by `/builds/isc-projects/bind9/bin/named/.libs/named -c /builds/isc-projects/bind9/'.
Program terminated with signal SIGABRT, Aborted.
#0 control_recvmessage (handle=0x7f742d482c40, result=ISC_R_SHUTTINGDOWN, arg=0x7f742cf8e920) at controlconf.c:551
551 }
[Current thread is 1 (Thread 0x7f742d95e300 (LWP 372543))]
#0 control_recvmessage (handle=0x7f742d482c40, result=ISC_R_SHUTTINGDOWN, arg=0x7f742cf8e920) at controlconf.c:551
#1 0x0000562f4f2cec3b in shutdown_listener (listener=0x7f742d47e040) at controlconf.c:207
#2 0x0000562f4f2d0ad5 in controls_shutdown (controls=0x7f742d467320) at controlconf.c:648
#3 0x0000562f4f2d0b12 in named_controls_shutdown (controls=0x7f742d467320) at controlconf.c:654
#4 0x0000562f4f3037c3 in shutdown_server (arg=0x7f742d4821c0) at server.c:10031
#5 0x00007f7430f7006c in isc__async_cb (handle=0x7f742d48bb88) at async.c:112
#6 0x00007f74305cde93 in uv__async_io (loop=0x7f742d48b820, w=0x7f742d48b9e8, events=1) at /usr/src/libuv-v1.44.1/src/unix/async.c:163
#7 0x00007f74305e9bc3 in uv__io_poll (loop=0x7f742d48b820, timeout=30000) at /usr/src/libuv-v1.44.1/src/unix/epoll.c:374
#8 0x00007f74305ce8ae in uv_run (loop=0x7f742d48b820, mode=UV_RUN_DEFAULT) at /usr/src/libuv-v1.44.1/src/unix/core.c:391
#9 0x00007f7430f90a57 in loop_thread (arg=0x7f742d48b800) at loop.c:281
#10 0x00007f7430fab5e6 in thread_body (wrap=0x562f501f81a0) at thread.c:88
#11 0x00007f7430fab6fa in isc_thread_main (func=0x7f7430f90895 <loop_thread>, arg=0x7f742d48b800) at thread.c:119
#12 0x00007f7430f91b3f in isc_loopmgr_run (loopmgr=0x7f742d409780) at loop.c:450
#13 0x0000562f4f2dc545 in main (argc=4, argv=0x7ffffd12b638) at main.c:1535
```
<details><summary>full backtrace</summary>
```
[New LWP 372543]
[New LWP 372574]
[New LWP 372573]
[New LWP 372575]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/builds/isc-projects/bind9/bin/named/.libs/named -c /builds/isc-projects/bind9/'.
Program terminated with signal SIGABRT, Aborted.
#0 control_recvmessage (handle=0x7f742d482c40, result=ISC_R_SHUTTINGDOWN, arg=0x7f742cf8e920) at controlconf.c:551
551 controlconf.c: No such file or directory.
[Current thread is 1 (Thread 0x7f742d95e300 (LWP 372543))]
Thread 4 (Thread 0x7f74277fe700 (LWP 372575)):
#0 0x00007f743021fd56 in epoll_wait (epfd=18, events=0x7f74277f91e0, maxevents=1024, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
No locals.
#1 0x00007f74305e983a in ?? () from /usr/lib/x86_64-linux-gnu/libuv.so.1
No symbol table info available.
#2 0xffffffff00000000 in ?? ()
No symbol table info available.
#3 0x00007f742d48d1a0 in ?? ()
No symbol table info available.
#4 0x0000000000000000 in ?? ()
No symbol table info available.
Thread 3 (Thread 0x7f742ca7f700 (LWP 372573)):
#0 0x00007f743021fd56 in epoll_wait (epfd=10, events=0x7f742ca7a1e0, maxevents=1024, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
No locals.
#1 0x00007f74305e983a in ?? () from /usr/lib/x86_64-linux-gnu/libuv.so.1
No symbol table info available.
#2 0xffffffff00000000 in ?? ()
No symbol table info available.
#3 0x00007f742d48c0a0 in ?? ()
No symbol table info available.
#4 0x0000000000000000 in ?? ()
No symbol table info available.
Thread 2 (Thread 0x7f7427fff700 (LWP 372574)):
#0 0x00007f743021fd56 in epoll_wait (epfd=14, events=0x7f7427ffa1e0, maxevents=1024, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
No locals.
#1 0x00007f74305e983a in ?? () from /usr/lib/x86_64-linux-gnu/libuv.so.1
No symbol table info available.
#2 0xffffffff00000000 in ?? ()
No symbol table info available.
#3 0x00007f742d48c920 in ?? ()
No symbol table info available.
#4 0x0000000000000000 in ?? ()
No symbol table info available.
Thread 1 (Thread 0x7f742d95e300 (LWP 372543)):
#0 control_recvmessage (handle=0x7f742d482c40, result=ISC_R_SHUTTINGDOWN, arg=0x7f742cf8e920) at controlconf.c:551
conn = 0x7f742cf8e920
listener = 0x7f742d47e040
key = 0x0
sent = 32628
exp = 759212040
nonce = 32767
__func__ = "control_recvmessage"
#1 0x0000562f4f2cec3b in shutdown_listener (listener=0x7f742d47e040) at controlconf.c:207
conn = 0x7f742cf8e920
socktext = '\000' <repeats 62 times>
#2 0x0000562f4f2d0ad5 in controls_shutdown (controls=0x7f742d467320) at controlconf.c:648
listener = 0x7f742d47e040
next = 0x0
#3 0x0000562f4f2d0b12 in named_controls_shutdown (controls=0x7f742d467320) at controlconf.c:654
No locals.
#4 0x0000562f4f3037c3 in shutdown_server (arg=0x7f742d4821c0) at server.c:10031
server = 0x7f742d4821c0
view = 0x0
view_next = 0x0
kasp = 0x0
kasp_next = 0x0
flush = true
nsc = 0x0
#5 0x00007f7430f7006c in isc__async_cb (handle=0x7f742d48bb88) at async.c:112
job = 0x7f742d466360
loop = 0x7f742d48b800
jobs = {head = {node = {next = 0x7f742661d790}}, tail = {p = 0x7f742d466370}}
ret = CDS_WFCQ_RET_DEST_EMPTY
node = 0x7f742d466370
next = 0x0
#6 0x00007f74305cde93 in uv__fs_preadv (fd=1, bufs=0x36a, nbufs=884219259, off=140137004398760) at /usr/src/libuv-v1.46.0/src/unix/fs.c:454
buf = 0x8
end = 0x7f742d48bb88
result = 140136952674616
rc = 140136952674336
pos = 140136952675312
__PRETTY_FUNCTION__ = "H\213E\320H)\320H\301\370\006H\211\302"
#7 0x00007f74305e9bc3 in ?? () from /usr/lib/x86_64-linux-gnu/libuv.so.1
No symbol table info available.
#8 0x0000753000000000 in ?? ()
No symbol table info available.
#9 0x00007f742d48b820 in ?? ()
No symbol table info available.
#10 0x0000000000000000 in ?? ()
No symbol table info available.
```
</details>
[named.run](/uploads/5f7bd471a74332124dde4d832256cc4b/named.run)
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
https://gitlab.isc.org/isc-projects/bind9/-/issues/4397
util/checklibs.sh script doesn't work
2023-11-07T11:26:13Z
Mark Andrews
util/checklibs.sh script doesn't work
It looks like the automatic formatting of shell scripts broke util/checklibs.sh on MacOS at least.
The script now has a case statement inside a $() and the shell doesn't cope with this. It doesn't find
the correct ')' to end the $(). ...
It looks like the automatic formatting of shell scripts broke util/checklibs.sh on MacOS at least.
The script now has a case statement inside a $() and the shell doesn't cope with this. It doesn't find
the correct ')' to end the $(). Converting the case to a if/elif/fi series addresses this.
```
% sh util/checklibs.sh
util/checklibs.sh: line 90: syntax error near unexpected token `;;'
util/checklibs.sh: line 90: ` isc_ntsecurity_getaccountgroups) continue ;; # internal'
%
```
```
diff --git a/util/checklibs.sh b/util/checklibs.sh
index ef96a9519b9..c30bb8be3b1 100755
--- a/util/checklibs.sh
+++ b/util/checklibs.sh
@@ -86,10 +86,11 @@ for lib in $(git ls-files -c lib \
| xargs grep "$pat" \
| sed -e 's/.*://' -e 's/(.*//' \
| while read p; do
- case $p in
- isc_ntsecurity_getaccountgroups) continue ;; # internal
- isc_socketmgr_getmaxsockets) p=isc__socketmgr_getmaxsockets ;;
- esac
+ if test "$p" = isc_ntsecurity_getaccountgroups; then
+ continue
+ elif test "$p" = isc_socketmgr_getmaxsockets; then
+ p=isc__socketmgr_getmaxsockets
+ fi
grep -q "^${p}"'$' $def && continue
test $lib = isc -a -f lib/isc/win32/libisc.def.exclude \
&& grep -q "^${p}"'$' lib/isc/win32/libisc.def.exclude \
```
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
https://gitlab.isc.org/isc-projects/bind9/-/issues/4408
Release Checklist for BIND 9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18
2024-01-10T07:22:57Z
Petr Špaček
pspacek@isc.org
Release Checklist for BIND 9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18
## Release Schedule
**Code Freeze:** Wednesday, 1 November 2023
**Tagging Deadline:** Monday, 6 November 2023
**Public Release:** Wednesday, 15 November 2023
## Documentation Review Links
**Closed issues assigned to the milestone ...
## Release Schedule
**Code Freeze:** Wednesday, 1 November 2023
**Tagging Deadline:** Monday, 6 November 2023
**Public Release:** Wednesday, 15 November 2023
## Documentation Review Links
**Closed issues assigned to the milestone without a release note:**
- [9.16.45](https://gitlab.isc.org/isc-projects/bind9/-/issues?scope=all&sort=created_asc&state=closed&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29¬%5Blabel_name%5D%5B%5D=Release+Notes¬%5Blabel_name%5D%5B%5D=Duplicate&label_name%5B%5D=v9.16)
- [9.16.45-S1](https://gitlab.isc.org/isc-private/bind9/-/issues?scope=all&sort=created_asc&state=closed&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29¬%5Blabel_name%5D%5B%5D=Release+Notes¬%5Blabel_name%5D%5B%5D=Duplicate&label_name%5B%5D=v9.16-S)
- [9.18.20](https://gitlab.isc.org/isc-projects/bind9/-/issues?scope=all&sort=created_asc&state=closed&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29¬%5Blabel_name%5D%5B%5D=Release+Notes¬%5Blabel_name%5D%5B%5D=Duplicate&label_name%5B%5D=v9.18)
- [9.18.20-S1](https://gitlab.isc.org/isc-private/bind9/-/issues?scope=all&sort=created_asc&state=closed&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29¬%5Blabel_name%5D%5B%5D=Release+Notes¬%5Blabel_name%5D%5B%5D=Duplicate&label_name%5B%5D=v9.18-S)
- [9.19.18](https://gitlab.isc.org/isc-projects/bind9/-/issues?scope=all&sort=created_asc&state=closed&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29¬%5Blabel_name%5D%5B%5D=Release+Notes¬%5Blabel_name%5D%5B%5D=Duplicate&label_name%5B%5D=v9.19)
**Merge requests merged into the milestone without a release note:**
- [9.16.45](https://gitlab.isc.org/isc-projects/bind9/-/merge_requests?scope=all&sort=merged_at&state=merged&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29¬%5Blabel_name%5D%5B%5D=Release+Notes&target_branch=bind-9.16)
- [9.16.45-S1](https://gitlab.isc.org/isc-private/bind9/-/merge_requests?scope=all&sort=merged_at&state=merged&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29¬%5Blabel_name%5D%5B%5D=Release+Notes&target_branch=bind-9.16-sub)
- [9.18.20](https://gitlab.isc.org/isc-projects/bind9/-/merge_requests?scope=all&sort=merged_at&state=merged&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29¬%5Blabel_name%5D%5B%5D=Release+Notes&target_branch=bind-9.18)
- [9.18.20-S1](https://gitlab.isc.org/isc-private/bind9/-/merge_requests?scope=all&sort=merged_at&state=merged&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29¬%5Blabel_name%5D%5B%5D=Release+Notes&target_branch=bind-9.18-sub)
- [9.19.18](https://gitlab.isc.org/isc-projects/bind9/-/merge_requests?scope=all&sort=merged_at&state=merged&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29¬%5Blabel_name%5D%5B%5D=Release+Notes&target_branch=main)
**Merge requests merged into the milestone without a `CHANGES` entry:**
- [9.16.45](https://gitlab.isc.org/isc-projects/bind9/-/merge_requests?scope=all&sort=merged_at&state=merged&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29&label_name%5B%5D=No+CHANGES&target_branch=bind-9.16)
- [9.16.45-S1](https://gitlab.isc.org/isc-private/bind9/-/merge_requests?scope=all&sort=merged_at&state=merged&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29&label_name%5B%5D=No+CHANGES&target_branch=bind-9.16-sub)
- [9.18.20](https://gitlab.isc.org/isc-projects/bind9/-/merge_requests?scope=all&sort=merged_at&state=merged&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29&label_name%5B%5D=No+CHANGES&target_branch=bind-9.18)
- [9.18.20-S1](https://gitlab.isc.org/isc-private/bind9/-/merge_requests?scope=all&sort=merged_at&state=merged&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29&label_name%5B%5D=No+CHANGES&target_branch=bind-9.18-sub)
- [9.19.18](https://gitlab.isc.org/isc-projects/bind9/-/merge_requests?scope=all&sort=merged_at&state=merged&milestone_title=November+2023+%289.16.45%2C+9.16.45-S1%2C+9.18.20%2C+9.18.20-S1%2C+9.19.18%29&label_name%5B%5D=No+CHANGES&target_branch=main)
## Release Checklist
### Before the Code Freeze
- [x] ***(QA)*** Rebase -S editions on top of current open-source versions: `git checkout bind-9.18-sub && git rebase origin/bind-9.18`
- [x] ***(QA)*** [Inform Support and Marketing of impending release (and give estimated release dates).](https://mattermost.isc.org/isc/pl/gjwhu93hqty798zom8wsfuashc)
- [x] ***(QA)*** Ensure there are no permanent test failures on any platform. Check [public](https://gitlab.isc.org/isc-projects/bind9/-/pipelines?scope=all&source=schedule) and [private](https://gitlab.isc.org/isc-private/bind9/-/pipelines?scope=all&source=schedule) scheduled pipelines: https://gitlab.isc.org/isc-projects/bind9/-/issues/4408#note_414255
- [x] ***(QA)*** Check charts from `shotgun:*` jobs in the scheduled pipelines to verify there is no unexplained performance drop for any protocol.
- [x] ***(QA)*** Check [Perflab](https://perflab.isc.org/) to ensure there has been no unexplained drop in performance for the versions being released.
- [x] ***(QA)*** Check whether all issues assigned to the release milestone are resolved[^1].
- [x] ***(QA)*** Ensure that there are no outstanding [merge requests in the private repository](https://gitlab.isc.org/isc-private/bind9/-/merge_requests/)[^1] (Subscription Edition only).
- [x] ***(QA)*** [Ensure](https://gitlab.isc.org/isc-private/bind-qa/-/blob/master/bind9/releng/check_backports.py) all merge requests marked for backporting have been indeed backported: https://gitlab.isc.org/isc-projects/bind9/-/issues/4408#note_414265
- [x] ***(QA)*** [Announce (on Mattermost) that the code freeze is in effect.](https://mattermost.isc.org/isc/pl/7ah5g9yc57gh3rppwz9s9uhrfo)
### Before the Tagging Deadline
- [x] ***(QA)*** Inspect the current output of the `cross-version-config-tests` job to verify that no unexpected backward-incompatible change was introduced in the current release cycle.
- [x] ***(QA)*** Ensure release notes are correct, ask Support and Marketing to check them as well. [Example](https://gitlab.isc.org/isc-private/bind9/-/merge_requests/510)
- [x] ***(QA)*** Add a release marker to `CHANGES`. Examples: [9.18](https://gitlab.isc.org/isc-projects/bind9/-/commit/f14d8ad78c0506fd4247187f2177f8eceeb6b3b9), [9.16](https://gitlab.isc.org/isc-projects/bind9/-/commit/1bcdf21874f99a00da389d723e0ad07dfd70f9f1)
- [x] ***(QA)*** Add a release marker to `CHANGES.SE` (Subscription Edition only). [Example](https://gitlab.isc.org/isc-private/bind9/-/commit/0f03d5737bcbdaa1bf713c6db1887b14938c3421)
- [x] ***(QA)*** Update BIND 9 version in `configure.ac` ([9.18+](https://gitlab.isc.org/isc-projects/bind9/-/commit/3c85ab7f4c35e6d8acef1393606002a0a8730100)) or `version` ([9.16](https://gitlab.isc.org/isc-projects/bind9/-/merge_requests/7692/diffs?commit_id=1bcdf21874f99a00da389d723e0ad07dfd70f9f1)).
- [x] ***(QA)*** ~~Rebuild `configure` using Autoconf on `docs.isc.org` (9.16).~~
- [x] ***(QA)*** ~~Update GitLab settings for all maintained branches to disallow merging to them: [public](https://gitlab.isc.org/isc-projects/bind9/-/settings/repository), [private](https://gitlab.isc.org/isc-private/bind9/-/settings/repository)~~
- [x] ***(QA)*** Tag the releases in the private repository (`git tag -s -m "BIND 9.x.y" v9.x.y`).
### Before the ASN Deadline (for ASN Releases) or the Public Release Date (for Regular Releases)
- [x] ***(QA)*** Check that the formatting is correct for the HTML version of release notes.
- [x] ***(QA)*** Check that the formatting of the generated man pages is correct.
- [x] ***(QA)*** Verify GitLab CI results [for the tags](https://gitlab.isc.org/isc-private/bind9/-/pipelines?scope=tags) created and sign off on the releases to be published.
- [x] ***(QA)*** ~~Update GitLab settings for all maintained branches to allow merging to them again: [public](https://gitlab.isc.org/isc-projects/bind9/-/settings/repository), [private](https://gitlab.isc.org/isc-private/bind9/-/settings/repository)~~
- [x] ***(QA)*** Prepare (using [`version_bump.py`](https://gitlab.isc.org/isc-private/bind-qa/-/blob/master/bind9/releng/version_bump.py)) and merge MRs resetting the release notes and updating the version string for each maintained branch.
- [x] ***(QA)*** Rebase the Subscription Edition branches (including recent release prep commits) on top of the open source branches with updated version strings.
- [x] ***(QA)*** Announce (on Mattermost) that the code freeze is over.
- [x] ***(QA)*** Request signatures for the tarballs, providing their location and checksums. Ask [signers on Mattermost](https://mattermost.isc.org/isc/channels/bind-9-qa).
- [x] ***(Signers)*** Ensure that the contents of tarballs and tags are identical.
- [x] ***(Signers)*** Validate tarball checksums, sign tarballs, and upload signatures.
- [x] ***(QA)*** Verify tarball signatures and check tarball checksums again: Run `publish_bind.sh` on repo.isc.org to pre-publish.
- [x] ~~***(QA)*** Prepare the `patches/` subdirectory for each security release (if applicable).~~
- [x] ***(QA)*** Pre-publish ASN and/or Subscription Edition tarballs so that packages can be built.
- [x] ***(QA)*** Build and test ASN and/or Subscription Edition packages (in [cloudsmith branch in private repo](https://gitlab.isc.org/isc-private/rpms/bind/-/tree/cloudsmith)). [Example](https://gitlab.isc.org/isc-private/rpms/bind/-/commit/e2512f4cfaf991827a635e374e7e93b27a5f38ba)
- [x] ***(QA)*** [Use the Printing Press project to prepare a release announcement email.](isc-private/printing-press!75)
- [x] ~~***(Marketing)*** Update ASN documents in the SF portal.~~
- [x] ~~***(Marketing)*** Send out ASN emails (if applicable).~~
### On the Day of Public Release
- [x] ***(QA)*** ~~Wait for clearance from Security Officer to proceed with the public release (if applicable).~~
- [x] ***(QA)*** Place tarballs in public location on FTP site.
- [x] ***(QA)*** Inform Marketing of the release, providing FTP links for the published tarballs.
- [x] ***(Marketing)*** Publish links to downloads on ISC website. [Example](https://gitlab.isc.org/website/theme-staging-site/-/commit/1ac7b30b73cb03228df4cd5651fa4e774ac35625)
- [x] ***(Marketing)*** Update the BIND -S information document in SF with download links to the new versions. (If this is a security release, this will have already been done as part of the ASN process.)
- [x] ***(Marketing)*** Update the Current Software Versions document in the SF portal if any stable versions were released.
- [x] ***(Marketing)*** Send the release announcement email to the *bind-announce* mailing list (and to *bind-users* if a major release - [example](https://lists.isc.org/pipermail/bind-users/2022-January/105624.html)).
- [x] ***(Marketing)*** Announce release on social media sites.
- [x] ***(Marketing)*** Update [Wikipedia entry for BIND](https://en.wikipedia.org/wiki/BIND).
- [x] ***(Support)*** Add the new releases to the [vulnerability matrix in the Knowledge Base](https://kb.isc.org/docs/aa-00913).
- [x] ***(Support)*** Update tickets in case of waiting support customers.
- [x] ***(QA)*** Build and test any outstanding private packages in [private repo](https://gitlab.isc.org/isc-private/rpms/bind/-/tree/cloudsmith). [Example](https://gitlab.isc.org/isc-private/rpms/bind/-/commit/2007d566db81dd9dfd79e571e2f600a3bc284da4)
- [x] ***(QA)*** Build [public RPMs](https://gitlab.isc.org/isc-packages/rpms/bind). [Example commit](https://gitlab.isc.org/isc-packages/rpms/bind/-/commit/3b5e851ea7c4e3570371a4878b5461f02a44f8cc) which triggers [Copr builds](https://copr.fedorainfracloud.org/coprs/isc/) automatically
- [x] ***(SwEng)*** Build Debian/Ubuntu packages.
- [x] ***(SwEng)*** Update Docker files [here](https://gitlab.isc.org/isc-projects/bind9-docker/-/branches) and make sure push is synchronized to [GitHub](https://github.com/isc-projects/bind9-docker). [Docker Hub](https://hub.docker.com/r/internetsystemsconsortium/bind9) should pick it up automatically. [Example](https://gitlab.isc.org/isc-projects/bind9-docker/-/commit/cada7e10e9af951595c98bfffc4bd42512faac05)
- [x] ***(QA)*** Ensure all new tags are annotated and signed. `git show --show-signature v9.19.12`
- [x] ***(QA)*** Push tags for the published releases to the public repository.
- [x] ***(QA)*** Using [`merge_tag.py`](https://gitlab.isc.org/isc-private/bind-qa/-/blob/master/bind9/releng/merge_tag.py), merge published release tags back into the their relevant development/maintenance branches.
- [x] ***(QA)*** ~~Ensure `allow_failure: true` is removed from the `cross-version-config-tests` job if it was set during the current release cycle.~~
- [x] ***(QA)*** Sanitize confidential issues which are assigned to the current release milestone and do not describe a security vulnerability, then make them public.
- [x] ***(QA)*** Sanitize [confidential issues](https://gitlab.isc.org/isc-projects/bind9/-/issues/?sort=milestone_due_desc&state=opened&confidential=yes) which are assigned to older release milestones and describe security vulnerabilities, then make them public if appropriate[^2].
- [x] ***(QA)*** Update QA tools used in GitLab CI (e.g. Black, PyLint, Sphinx) by modifying the relevant [`Dockerfile`](https://gitlab.isc.org/isc-projects/images/-/merge_requests/228/diffs).
- [x] ***(QA)*** Run a pipeline to rebuild all [images](https://gitlab.isc.org/isc-projects/images) used in GitLab CI.
- [x] ***(QA)*** Update [`metadata.json`](https://gitlab.isc.org/isc-private/bind-qa/-/blob/master/bind9/releng/metadata.json) with the upcoming release information.
[^1]: If not, use the time remaining until the tagging deadline to ensure all outstanding issues are either resolved or moved to a different milestone.
[^2]: As a rule of thumb, security vulnerabilities which have reproducers merged to the public repository are considered okay for full disclosure.
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
Petr Špaček
pspacek@isc.org
Petr Špaček
pspacek@isc.org
2023-11-15
https://gitlab.isc.org/isc-projects/bind9/-/issues/4302
named hangs after checkds test in cross-version-config-tests
2023-10-04T13:26:29Z
Mark Andrews
named hangs after checkds test in cross-version-config-tests
Job [#3642568](https://gitlab.isc.org/isc-projects/bind9/-/jobs/3642568) failed for 5a990c0ba64a0f6ffe273ea9cad8112d979c7305:
```
2023-09-07 00:34:17 INFO:checkds I:checkds_tmp_pw7sw_j1:ns9 didn't die when sent a SIGTERM
2023-09-07 ...
Job [#3642568](https://gitlab.isc.org/isc-projects/bind9/-/jobs/3642568) failed for 5a990c0ba64a0f6ffe273ea9cad8112d979c7305:
```
2023-09-07 00:34:17 INFO:checkds I:checkds_tmp_pw7sw_j1:ns9 didn't die when sent a SIGTERM
2023-09-07 00:34:17 ERROR:checkds Failed to stop servers
2023-09-07 00:34:17 INFO:checkds I:checkds_tmp_pw7sw_j1:Core dump(s) found: /builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1/ns9/core.59289
2023-09-07 00:34:17 INFO:checkds D:checkds_tmp_pw7sw_j1:backtrace from /builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1/ns9/core.59289:
2023-09-07 00:34:17 INFO:checkds D:checkds_tmp_pw7sw_j1:--------------------------------------------------------------------------------
2023-09-07 00:34:26 INFO:checkds D:/builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1:Core was generated by `/builds/isc-projects/bind9/bin/named/.libs/named -D checkds_tmp_pw7sw_j1-ns9 -X'.
2023-09-07 00:34:26 INFO:checkds D:/builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1:Program terminated with signal SIGABRT, Aborted.
2023-09-07 00:34:26 INFO:checkds D:/builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1:#0 futex_wait (private=0, expected=0, futex_word=0x7f1f01469754) at ../sysdeps/nptl/futex-internal.h:146
2023-09-07 00:34:26 INFO:checkds D:/builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1:[Current thread is 1 (Thread 0x7f1f01803500 (LWP 59289))]
2023-09-07 00:34:26 INFO:checkds D:/builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1:#0 futex_wait (private=0, expected=0, futex_word=0x7f1f01469754) at ../sysdeps/nptl/futex-internal.h:146
2023-09-07 00:34:26 INFO:checkds D:/builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1:#1 futex_wait_simple (private=0, expected=0, futex_word=0x7f1f01469754) at ../sysdeps/nptl/futex-internal.h:177
2023-09-07 00:34:26 INFO:checkds D:/builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1:#2 ___pthread_barrier_wait (barrier=0x7f1f01469750) at ./nptl/pthread_barrier_wait.c:184
2023-09-07 00:34:26 INFO:checkds D:/builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1:#3 0x00007f1f04f7a21d in loop_thread (arg=arg@entry=0x7f1f014ae800) at loop.c:288
2023-09-07 00:34:26 INFO:checkds D:/builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1:#4 0x00007f1f04f89b47 in thread_body (wrap=0x55b020286600) at thread.c:85
2023-09-07 00:34:26 INFO:checkds D:/builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1:#5 0x00007f1f04f89bc0 in isc_thread_main (func=func@entry=0x7f1f04f7a174 <loop_thread>, arg=0x7f1f014ae800) at thread.c:116
2023-09-07 00:34:26 INFO:checkds D:/builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1:#6 0x00007f1f04f7b14e in isc_loopmgr_run (loopmgr=0x7f1f014696c0) at loop.c:454
2023-09-07 00:34:26 INFO:checkds D:/builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1:#7 0x000055b01fc81900 in main (argc=<optimized out>, argv=<optimized out>) at main.c:1592
2023-09-07 00:34:26 INFO:checkds D:checkds_tmp_pw7sw_j1:--------------------------------------------------------------------------------
2023-09-07 00:34:26 INFO:checkds D:checkds_tmp_pw7sw_j1:full backtrace from /builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1/ns9/core.59289 saved in /builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1/ns9/core.59289-backtrace.txt
2023-09-07 00:34:27 INFO:checkds D:checkds_tmp_pw7sw_j1:core dump /builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1/ns9/core.59289 archived as /builds/isc-projects/bind9/bin/tests/system/checkds_tmp_pw7sw_j1/ns9/core.59289.gz
2023-09-07 00:34:27 ERROR:checkds Found core dumps
```
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
https://gitlab.isc.org/isc-projects/bind9/-/issues/4287
ASSERT query.c:7965 INSIST
2023-10-13T12:41:18Z
Borja Marcos EA2EKH
ASSERT query.c:7965 INSIST
<!--
If the bug you are reporting is potentially security-related - for example,
if it involves an assertion failure or other crash in `named` that can be
triggered repeatedly - then please make sure that you make the new issue
confident...
<!--
If the bug you are reporting is potentially security-related - for example,
if it involves an assertion failure or other crash in `named` that can be
triggered repeatedly - then please make sure that you make the new issue
confidential!
-->
### Summary
An asssertion violation.
### BIND version used
```
BIND 9.16.39 (Extended Support Version) <id:83e26c2>
running on FreeBSD amd64 13.1-RELEASE FreeBSD 13.1-RELEASE fc952ac22 DNS13
built by make with '--disable-linux-caps' '--localstatedir=/var' '--sysconfdir=/usr/local/etc/namedb' '--with-dlopen=yes' '--without-python' '--with-libxml2' '--with-openssl=/usr' '--with-readline=-L/usr/local/lib -ledit' '--with-dlz-filesystem=yes' '--enable-dnstap' '--disable-fixed-rrset' '--disable-geoip' '--without-maxminddb' '--without-gssapi' '--with-libidn2=/usr/local' '--without-json-c' '--disable-largefile' '--with-lmdb=/usr/local' '--disable-native-pkcs11' '--disable-querytrace' '--enable-tcp-fastopen' '--enable-developer' '--enable-symtable' '--prefix=/usr/local' '--mandir=/usr/local/man' '--infodir=/usr/local/share/info/' '--build=amd64-portbld-freebsd13.1' 'build_alias=amd64-portbld-freebsd13.1' 'CC=cc' 'CFLAGS=-pipe -march=westmere -DLIBICONV_PLUG -g -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing ' 'LDFLAGS= -fstack-protector-strong ' 'LIBS=-L/usr/local/lib' 'CPPFLAGS=-DLIBICONV_PLUG -isystem /usr/local/include' 'CPP=cpp' 'PKG_CONFIG=pkgconf' 'PKG_CONFIG_LIBDIR=/usr/ports/dns/bind916/work/.pkgconfig:/usr/local/libdata/pkgconfig:/usr/local/share/pkgconfig:/usr/libdata/pkgconfig'
compiled by CLANG FreeBSD Clang 13.0.0 (git@github.com:llvm/llvm-project.git llvmorg-13.0.0-0-gd7b669b3a303)
compiled with OpenSSL version: OpenSSL 1.1.1o-freebsd 3 May 2022
linked to OpenSSL version: OpenSSL 1.1.1o-freebsd 3 May 2022
compiled with libuv version: 1.44.2
linked to libuv version: 1.44.2
compiled with libxml2 version: 2.9.13
linked to libxml2 version: 20913
compiled with zlib version: 1.2.12
linked to zlib version: 1.2.12
compiled with protobuf-c version: 1.4.1
linked to protobuf-c version: 1.4.1
threads support is enabled
DNSSEC algorithms: RSASHA1 NSEC3RSASHA1 RSASHA256 RSASHA512 ECDSAP256SHA256 ECDSAP384SHA384 ED25519 ED448
DS algorithms: SHA-1 SHA-256 SHA-384
HMAC algorithms: HMAC-MD5 HMAC-SHA1 HMAC-SHA224 HMAC-SHA256 HMAC-SHA384 HMAC-SHA512
TKEY mode 2 support (Diffie-Hellman): yes
TKEY mode 3 support (GSS-API): no
default paths:
named configuration: /usr/local/etc/namedb/named.conf
rndc configuration: /usr/local/etc/namedb/rndc.conf
DNSSEC root key: /usr/local/etc/namedb/bind.keys
nsupdate session key: /var/run/named/session.key
named PID file: /var/run/named/pid
named lock file: /var/run/named/named.lock
```
### Steps to reproduce
Probably the result of a query.
### What is the current *bug* behavior?
Assertion:
```
<26>1 2023-08-26T11:37:08.859617+00:00 [redacted] named 48128 - - query.c:7965: INSIST(qctx->rdataset == ((void *)0) || qctx->qtype == ((dns_rdatatype_t)dns_rdatatype_dname)) failed, back trace
<26>1 2023-08-26T11:37:08.859634+00:00 [redacted] named 48128 - - #0 0x30feaa in assertion_failed()+0x5a
<26>1 2023-08-26T11:37:08.859645+00:00 [redacted] named 48128 - - #1 0x6a391d in isc_assertion_failed()+0x2d
<26>1 2023-08-26T11:37:08.859655+00:00 [redacted] named 48128 - - #2 0x39cf59 in query_respond()+0x4f9
<26>1 2023-08-26T11:37:08.859664+00:00 [redacted] named 48128 - - #3 0x38f5a6 in query_prepresponse()+0x1c6
<26>1 2023-08-26T11:37:08.859673+00:00 [redacted] named 48128 - - #4 0x38d741 in query_gotanswer()+0x411
<26>1 2023-08-26T11:37:08.859682+00:00 [redacted] named 48128 - - #5 0x3881fa in query_lookup()+0xb4a
<26>1 2023-08-26T11:37:08.859691+00:00 [redacted] named 48128 - - #6 0x3a628d in query_lookup_stale()+0xad
<26>1 2023-08-26T11:37:08.859704+00:00 [redacted] named 48128 - - #7 0x388cec in fetch_callback()+0x22c
<26>1 2023-08-26T11:37:08.859714+00:00 [redacted] named 48128 - - #8 0x6f62c2 in task_run()+0x422
<26>1 2023-08-26T11:37:08.859723+00:00 [redacted] named 48128 - - #9 0x6f5e95 in isc_task_run()+0x15
<26>1 2023-08-26T11:37:08.859733+00:00 [redacted] named 48128 - - #10 0x6d1d85 in isc__nm_async_task()+0x25
<26>1 2023-08-26T11:37:08.859742+00:00 [redacted] named 48128 - - #11 0x6c9efb in process_netievent()+0xdb
<26>1 2023-08-26T11:37:08.859751+00:00 [redacted] named 48128 - - #12 0x6d1b2a in process_queue()+0x3aa
<26>1 2023-08-26T11:37:08.859760+00:00 [redacted] named 48128 - - #13 0x6d16ef in process_all_queues()+0x2f
<26>1 2023-08-26T11:37:08.859769+00:00 [redacted] named 48128 - - #14 0x6c5e64 in async_cb()+0x24
<26>1 2023-08-26T11:37:08.859778+00:00 [redacted] named 48128 - - #15 0x800cf8e3a in _fini()+0x8005e3d2e
<26>1 2023-08-26T11:37:08.859787+00:00 [redacted] named 48128 - - #16 0x800d0a3f1 in _fini()+0x8005f52e5
<26>1 2023-08-26T11:37:08.859796+00:00 [redacted] named 48128 - - #17 0x800cf9388 in _fini()+0x8005e427c
<26>1 2023-08-26T11:37:08.859805+00:00 [redacted] named 48128 - - #18 0x6c5ecd in nm_thread()+0x4d
<26>1 2023-08-26T11:37:08.859814+00:00 [redacted] named 48128 - - #19 0x6f9adf in isc__trampoline_run()+0x2f
<26>1 2023-08-26T11:37:08.859823+00:00 [redacted] named 48128 - - exiting (due to assertion failure)
<6>1 2023-08-26T11:37:39.754795+00:00 [redacted] kernel - - - pid 48128 (named), jid 0, uid 53: exited on signal 6 (core dumped)
```
```
(gdb) bt
#0 thr_kill () at thr_kill.S:4
#1 0x0000000800df2c74 in __raise (s=s@entry=6)
at /usr/src/lib/libc/gen/raise.c:52
#2 0x0000000800ea4109 in abort () at /usr/src/lib/libc/stdlib/abort.c:67
#3 0x0000000000310150 in assertion_failed (file=0x2836ab "query.c",
line=7965, type=isc_assertiontype_insist,
cond=0x26b3fa "qctx->rdataset == ((void *)0) || qctx->qtype == ((dns_rdatatype_t)dns_rdatatype_dname)") at ./main.c:271
#4 0x00000000006a391d in isc_assertion_failed (file=0x2836ab "query.c",
line=7965, type=isc_assertiontype_insist,
cond=0x26b3fa "qctx->rdataset == ((void *)0) || qctx->qtype == ((dns_rdatatype_t)dns_rdatatype_dname)") at assertions.c:48
#5 0x000000000039cf59 in query_respond (qctx=0x7fffdf5e7d90) at query.c:7965
#6 0x000000000038f5a6 in query_prepresponse (qctx=0x7fffdf5e7d90)
at query.c:10511
#7 0x000000000038d741 in query_gotanswer (qctx=0x7fffdf5e7d90, res=0)
at query.c:7357
#8 0x00000000003881fa in query_lookup (qctx=0x7fffdf5e7d90) at query.c:5996
#9 0x00000000003a628d in query_lookup_stale (client=0x83cb28558)
at query.c:6071
#10 0x0000000000388cec in fetch_callback (task=0x80a44bda0, event=0x83e1adf00)
at query.c:6114
#11 0x00000000006f62c2 in task_run (task=0x80a44bda0) at task.c:859
#12 0x00000000006f5e95 in isc_task_run (task=0x80a44bda0) at task.c:953
#13 0x00000000006d1d85 in isc__nm_async_task (worker=0x8016f1450,
ev0=0x88c8fb040) at netmgr.c:871
#14 0x00000000006c9efb in process_netievent (worker=0x8016f1450,
ievent=0x88c8fb040) at netmgr.c:943
#15 0x00000000006d1b2a in process_queue (worker=0x8016f1450,
type=NETIEVENT_TASK) at netmgr.c:1009
#16 0x00000000006d16ef in process_all_queues (worker=0x8016f1450)
at netmgr.c:790
#17 0x00000000006c5e64 in async_cb (handle=0x8016f1728) at netmgr.c:819
#18 0x0000000800cf8e3a in ?? () from /usr/local/lib/libuv.so.1
#19 0x0000000800d0a3f1 in ?? () from /usr/local/lib/libuv.so.1
#20 0x0000000800cf9388 in uv_run () from /usr/local/lib/libuv.so.1
#21 0x00000000006c5ecd in nm_thread (worker0=0x8016f1450) at netmgr.c:721
#22 0x00000000006f9adf in isc__trampoline_run (arg=0x80161b930)
at trampoline.c:213
#23 0x0000000800d2583a in thread_start (curthread=0x801615100)
at /usr/src/lib/libthr/thread/thr_create.c:292
#24 0x0000000000000000 in ?? ()
Backtrace stopped: Cannot access memory at address 0x7fffdf5f9000
```
qtcx contents follow as requested
```
(gdb) print *qctx
$2 = {dbuf = 0x80304e990, fname = 0x0, tname = 0x0, rdataset = 0x85d55b200,
sigrdataset = 0x0, noqname = 0x0, qtype = 1, type = 1, options = 0,
redirected = false, is_zone = false, is_staticstub_zone = false,
resuming = false, dns64 = false, dns64_exclude = false, rpz = false,
authoritative = false, want_restart = false, refresh_rrset = false,
need_wildcardproof = false, nxrewrite = false, findcoveringnsec = false,
answer_has_ns = false, wildcardname = {name = {magic = 0, ndata = 0x0,
length = 0, labels = 0, attributes = 0, offsets = 0x0, buffer = 0x0,
link = {prev = 0x0, next = 0x0}, list = {head = 0x0, tail = 0x0}},
offsets = '\000' <repeats 127 times>, buffer = {magic = 0, base = 0x0,
length = 0, used = 0, current = 0, active = 0, link = {prev = 0x0,
next = 0x0}, mctx = 0x0, autore = false},
data = '\000' <repeats 254 times>}, dsname = {name = {magic = 0,
ndata = 0x0, length = 0, labels = 0, attributes = 0, offsets = 0x0,
buffer = 0x0, link = {prev = 0x0, next = 0x0}, list = {head = 0x0,
tail = 0x0}}, offsets = '\000' <repeats 127 times>, buffer = {
magic = 0, base = 0x0, length = 0, used = 0, current = 0, active = 0,
link = {prev = 0x0, next = 0x0}, mctx = 0x0, autore = false},
data = '\000' <repeats 254 times>}, client = 0x83cb28558,
detach_client = false, event = 0x0, db = 0x8024c2400, version = 0x0,
node = 0x818a032b0, zdb = 0x0, znode = 0x0, zfname = 0x0, zversion = 0x0,
zrdataset = 0x0, zsigrdataset = 0x0, rpz_st = 0x0, zone = 0x0,
view = 0x809acee00, result = 0, line = 0}
```
### What is the expected *correct* behavior?
(What you should see instead.)
### Relevant configuration files
(Paste any relevant configuration files - please use code blocks (```)
to format console output. If submitting the contents of your
configuration file in a non-confidential Issue, it is advisable to
obscure key secrets: this can be done automatically by using
`named-checkconf -px`.)
### Relevant logs and/or screenshots
(Paste any relevant logs - please use code blocks (```) to format console
output, logs, and code, as it's very hard to read otherwise.)
### Possible fixes
(If you can, link to the line of code that might be responsible for the
problem.)
November 2023 (9.16.45, 9.16.45-S1, 9.18.20, 9.18.20-S1, 9.19.18)
https://gitlab.isc.org/isc-projects/kea/-/issues/3175
Sanity checks for Kea 2.5.4 rc1
2023-11-29T17:29:00Z
Andrei Pavel
andrei@isc.org
Sanity checks for Kea 2.5.4 rc1
We are now at step SANITY CHECKS of Kea 2.5.4 rc1.
Please verify the tarballs and packages according to [chapter `4. Sanity Checks` of the release procedure](https://gitlab.isc.org/isc-private/qa-dhcp/-/wikis/Kea/Release-Process#user-co...
We are now at step SANITY CHECKS of Kea 2.5.4 rc1.
Please verify the tarballs and packages according to [chapter `4. Sanity Checks` of the release procedure](https://gitlab.isc.org/isc-private/qa-dhcp/-/wikis/Kea/Release-Process#user-content-4-sanity-checks) and according to your imagination.
Before starting, please state what you are checking in a thread/discussion (not as comment).
When you finish a check, state in the same thread/discussion what the result is.
This way we know what is covered upfront and we can avoid repeating ourselves.
#### Tarballs on repo.isc.org
* `/data/shared/sweng/kea/releases/2.5.4-rc1`
* `/data/shared/sweng/kea/releases/premium-2.5.4-rc1`
* `/data/shared/sweng/kea/releases/subscription-2.5.4-rc1`
* `/data/shared/sweng/kea/releases/enterprise-2.5.4-rc1`
```
SHA256 (kea-2.5.4.tar.gz) = bcd261ccfde7e3e94e466913e0c72e71e9430479cfa62b15e2d44e8d4cc1c008
SHA256 (kea-enterprise-2.5.4.tar.gz) = 385ef929ac5428ae7274bb855e41042ed1e9797e70dbd5c650fc367aaf3160e8
SHA256 (kea-premium-2.5.4.tar.gz) = faf453250d625d143377b0ded81e556d4cbad649db98ff1b88b2f2e250eed542
SHA256 (kea-subscription-2.5.4.tar.gz) = 3b30af28eebf7e0c6668eaf6f0ccaeb84f4af88fa1a3f10da131d1a73d750777
```
#### Packages on packages.aws.isc.org
* [APK: 2.5.4-r20231128114358](https://packages.aws.isc.org/#browse/search/raw=format%3Draw%20AND%20name.raw%3D*r20231128114358.apk)
* [deb: 2.5.4-isc20231128114358](https://packages.aws.isc.org/#browse/search/apt=format%3Dapt%20AND%20version%3D2.5.4-isc20231128114358)
* [RPM: 2.5.4-isc20231128114358.\[os\]](https://packages.aws.isc.org/#browse/search/yum=format%3Dyum%20AND%20version%3D2.5.4-isc20231128114358*)
You can find the name for all the packages attached as build artifacts in the pkg job: https://jenkins.aws.isc.org/job/kea-dev/job/pkg/1362/
Instructions for installing packages are at point 9 of [chapter `4. Sanity Checks` of the release procedure](https://gitlab.isc.org/isc-private/qa-dhcp/-/wikis/Kea/Release-Process#user-content-4-sanity-checks).
kea2.5.4
2023-11-29
https://gitlab.isc.org/isc-projects/kea/-/issues/3174
Changes for Kea 2.5.4 release
2023-11-28T13:38:22Z
Andrei Pavel
andrei@isc.org
Changes for Kea 2.5.4 release
- [x] added release entry to ChangeLogs
- [x] regenerated BNF grammar
- [x] regenerated message headers
- [x] regenerated parsers
- [x] reordered messages in alphabetical order
- [x] updated copyright years
- [x] added release entry to ChangeLogs
- [x] regenerated BNF grammar
- [x] regenerated message headers
- [x] regenerated parsers
- [x] reordered messages in alphabetical order
- [x] updated copyright years
kea2.5.4
Andrei Pavel
andrei@isc.org
Andrei Pavel
andrei@isc.org
https://gitlab.isc.org/isc-projects/kea/-/issues/3173
Bump up library versions for 2.5.4
2023-11-28T09:10:54Z
Andrei Pavel
andrei@isc.org
Bump up library versions for 2.5.4
Bump up library versions for %"kea2.5.4".
Bump up library versions for %"kea2.5.4".
kea2.5.4
Razvan Becheriu
Razvan Becheriu
https://gitlab.isc.org/isc-projects/kea/-/issues/3172
2.5.4 release checklist
2024-02-16T13:00:00Z
Andrei Pavel
andrei@isc.org
2.5.4 release checklist
---
name: a.b.c release checklist
about: Create a new issue using this checklist for each release.
---
# Kea Release Checklist
This is thoroughly documented in [the Kea Release Process guide](https://wiki.isc.org/bin/view/QA/KeaRelease...
---
name: a.b.c release checklist
about: Create a new issue using this checklist for each release.
---
# Kea Release Checklist
This is thoroughly documented in [the Kea Release Process guide](https://wiki.isc.org/bin/view/QA/KeaReleaseProcess).
## Pre-Release Preparation
Some of these checks and updates can be made before the actual freeze. For new stable releases or maintenance releases, please don't use the `kea-dev` build farm; use a dedicated build farm for each release cycle.
1. [x] Check Jenkins results:
1. [x] Check Jenkins jobs for failures: [distcheck](https://jenkins.aws.isc.org/job/kea-dev/job/distcheck/), etc...
1. [x] Check [Jenkins Tests Report](https://jenkins.aws.isc.org/job/kea-dev/job/jenkins-tests-report/).
1. [x] Check [tarball check report](https://jenkins.aws.isc.org/job/kea-dev/job/build-tarball/Kea_20Build_20Checks/)
1. [ ] Check [Performance Test Results](https://jenkins.aws.isc.org/job/kea-dev/job/performance/lastSuccessfulBuild/artifact/qa-dhcp/kea/performance-jenkins/report.html) in Jenkins for drops in performance.
1. [x] Create a Gitlab issue for bumping up library versions and `KEA_HOOKS_VERSION` and notify developers.
* In case of no developers available, it can be done by running: [./tools/bump-lib-versions.sh](https://gitlab.isc.org/isc-projects/kea/-/blob/master/tools/bump-lib-versions.sh) Kea-q.w.e Kea-a.b.c (where `a.b.c` is the version to be released and `q.w.e` is the version previous to that).
1. [ ] Look at the issue numbers in commit descriptions. Add to ChangeLog a mention about any change with visible impact that had not been mentioned already.
1. [ ] If any changes have been done to database schemas, then:
1. [ ] Check that a previously released schema has not been changed.
1. [ ] Check that the additions to `dhcpdb_create.*sql`, and nothing more nor less than what was added in this release, is present in a `upgrade_*_to_*.sh.in` script that should also have been added in this release.
1. [x] Prepare release notes.
1. [x] Create release note on Kea GitLab wiki and notify @tomek. It should be created under the `Release-Notes` directory, like this one: https://gitlab.isc.org/isc-projects/kea/-/wikis/Release-Notes/release-notes-2.3.4
1. [ ] Finish release notes and conduct its review.
1. [ ] Notify support that release notes are ready for review. To avoid conflicts in edits wait with next step after review is done.
1. [ ] Notify @sgoldlust or @vicky that release notes are ready for review. Due to time difference please do this at least 36 hours before planned release.
1. [x] Check that packages can be uploaded to cloudsmith.
1. Go to [release-upload-to-cloudsmith](https://jenkins.aws.isc.org/job/kea-dev/job/release-upload-to-cloudsmith/).
1. Click `Build with Parameters`.
1. Pick the latest pkg build in the `Packages` field, and the corresponding tarball build in the `Tarball` field, leave the rest as they are `PrivPubRepos: "private"`, `TarballOrPkg: "packages"`, `TestProdRepos: "testing"` and click `Build`.
1. If a new Cloudsmith repository is used, then:
1. [ ] Make sure freeradius packages are uploaded to the Cloudsmith repository or copied from a previous repository.
1. [ ] Make sure access tokens have been synchronized from previous Cloudsmith repositories and to the [check-pkgs.py](https://gitlab.isc.org/isc-private/qa-dhcp/-/blob/master/kea/pkgs-check/check-pkgs.py) QA tool.
1. [x] Check if ReadTheDocs can build Kea documentation. Alternatively, look for failures in emails if you know that the ReadTheDocs webhook is working.
1. Trigger rebuilding docs on [readthedocs.org](https://readthedocs.org/projects/kea/builds) and wait for the build to complete.
The following steps may involve changing files in the repository.
1. [x] Run [update-code-for-release.py](https://gitlab.isc.org/isc-private/qa-dhcp/-/blob/master/kea/build/update-code-for-release.py) \
Example command: `GITLAB_TOKEN='...' ./update-code-for-release.py 2.3.4 --repo-dir ~/isc/repos/kea/`. \
Help: `GITLAB_TOKEN='...' ./update-code-for-release.py --help`. \
The script requires an explicit flag for stable and maintenances releases e.g. `--repo-branch v2_4`. \
The script makes the following changes and actions:
1. Runs [prepare_kea_release.sh](https://gitlab.isc.org/isc-private/qa-dhcp/-/blob/master/kea/build/prepare_kea_release.sh) that:
1. Adds release entries in ChangeLogs.
1. Updates Kea version in configure.ac.
1. Updates copyright years in files that were changed in current year.
1. Sorts message files.
1. Regenerates message files headers.
1. Regenerates parsers using Bison from Docker
1. [x] Run the script again with the `--upload-only` flag which:
1. Creates an issue in GitLab for release changes in kea repo.
1. Creates branches and merge requests for kea and kea-premium.
1. Commits the changes in both repos.
1. Checks out created branches in both repos.
1. Commits and pushes the changes to GitLab server.
1. [x] Check manually User's Guide sections:
1. [ ] Chapter 1. Introduction
1. [ ] On what platforms we are running tests using Jenkins? Update Supported Platforms in platforms.rst file.
1. [ ] Did we add any additional 3rd party software? Update if needed.
1. [ ] Is there a new tool installed in bin or sbin released this time? If yes, is it documented?
1. [ ] Chapter 2. Quick Start
1. [ ] Has the default installation process changed (for kea and hooks)? If yes, are those changes documented and highlighted in the release notes?
1. [ ] Chapter 3. Installation
1. [ ] Check installation hierarchy (this is also automatically checked at the end of [ut-extended job](https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/)).
1. [ ] Check and update Build Requirements.
1. [ ] Check configure options against what `./configure -h` says.
1. [x] Check ChangeLog entries in Kea main and premium: spelling, trailing whitespaces, etc.
1. [x] Check AUTHORS, INSTALL, README files in Kea main and premium.
- AUTHORS: update credits
- README: check "provides" with Release Notes, User Guide (1.3 Kea Software)
1. [x] If changes were made, commit the change, push the branch to the main repository and request a review. Once the changes have been approved, merge the MR to master.
## Build selection, tarballs upload and sanity checks
This is the last moment to freeze code! :snowflake:
1. [x] Go to [build-tarball](https://jenkins.aws.isc.org/job/kea-dev/job/build-tarball/) Jenkins job and pick the last tarball built - it will be a release candidate.
1. [x] Check tarball before requesting sanity checks from the development team.
1. Download tarballs from picked Jenkins build
1. Check hook libraries.
1. Are there any new hook libraries installed in this release?
1. Are they in the proper tarball? Premium or subscription?
1. Do they have their own package?
1. Check sizes - is the new package reasonable?
1. Check installation tree, compare it with the previous release
1. Check installed libraries.
1. which were updated? (save results)
1. Do any of the libraries from the current release have lower version than in the previous release?
1. Uninstall Kea, check what left (there should be just configuration files)
1. Check if each of the installed binaries has a man page.
1. If not, is the binary included in the tarball? That might explain it.
1. Are man pages up to date?
1. Check if documentation is properly formatted, has correct versions and dates.
1. It's advised to search for previous version numbers, some of them are statically added in statements that are no longer valid.
1. [x] Upload tarballs to repo.isc.org using Jenkins and send sanity checks request.
1. Go to [release-tarball-upload](https://jenkins.aws.isc.org/job/kea-dev/job/release-tarball-upload/) Jenkins job.
1. Click `Build with Parameters`.
1. In field `Tarball` select picked tarball build.
1. In field `Pkg` select the corresponding pkg job.
1. In field `Release_Candidate` pick:
1. `rc1` if this is the first selected build for release, it will push the selected tarballs to repo.isc.org, to a directory suffixed with indicated rc#
1. next rc# if this is a respin after some fixes (note: it is not possible to pick previous rc number - it will result in an error)
1. Submit the job that will automatically:
1. Upload the tarballs.
1. Create a GitLab issue for sanity checks, put the announcement there.
1. Send Sanity Checks announcement on the Kea/DHCP channel on Mattermost.\
The announcement includes:
- a link to chapter 4 Sanity Checks of the release process: [KeaReleaseProcess - SanityChecks](https://wiki.isc.org/bin/view/QA/KeaReleaseProcess#4.%20Sanity%20Checks)
- a link to the GitLab issue
- tarballs locations with SHA256 checksums
- rpm/deb packages locations and versions
## Releasing Tarballs and Packages
Now it's time to publish the code.
1. [x] Update Release Notes with ChangeLog entries.
1. [x] Mark Jenkins jobs with release artifacts to be kept forever and update description of build by adding there version of released kea (e.g. `Kea-2.3.4`).
1. Go to the following Jenkins jobs, click release build and then, on the build page, click `Keep this build forever` button and edit description:
1. [build-tarball](https://jenkins.aws.isc.org/job/kea-dev/job/build-tarball/).
1. [pkg job](https://jenkins.aws.isc.org/job/kea-dev/job/pkg/).
1. [x] Upload final tarballs to repo.isc.org.
1. Go to [release-tarball-upload](https://jenkins.aws.isc.org/job/kea-dev/job/release-tarball-upload/) Jenkins job.
1. Click `Build with Parameters`.
1. In field `Tarball` select picked tarball build.
1. In field `Pkg` select the corresponding pkg job.
1. In field `Release_Candidate` pick `final`. This job will also:
- Open an issue on [the signing repository](https://gitlab.isc.org/isc-private/signing/-/issues) for signing final tarballs on repo.isc.org.
- Create Git tags `Kea-a.b.c` in Kea main and premium repositories.
- Create Gitlab releases `Kea-a.b.c` in Kea main and premium repositories.
1. [x] Sign tarballs with the personal key, by running [sign_kea_and_upload_asc.sh](https://gitlab.isc.org/isc-private/qa-dhcp/-/blob/master/kea/build/sign_kea_and_upload_asc.sh) which signs, verifies signatures and uploads them.
- If release engineer does NOT have signing key, please contact team member.
1. [x] Confirm that the tarballs have the checksums mentioned on the signing ticket.
1. [ ] Wait for clearance from Security Officer to proceed with the public release (if applicable). If this is a security release, next steps will be impacted by CVE checklist.
1. [x] Login to repo.isc.org and upload final tarball to public ftp using make-available script (only OPS can remove incorrectly uploaded tarballs).
* [x] For premium tarballs use `--private` option.
* For newest stable release use `--symlink=cur` option.
* Example command: `make-available --public --symlink=cur /data/shared/sweng/kea/releases/2.3.4`.
* [x] save links to all premium tarballs and put them into signing ticket as a comment.
1. [x] Upload final RPM & DEB packages, tarballs and sign files to cloudsmith.io:
1. Go to [release-upload-to-cloudsmith](https://jenkins.aws.isc.org/job/kea-dev/job/release-upload-to-cloudsmith/).
1. Click `Build with Parameters`.
1. Pick your selected pkg build in the `Packages` field, the corresponding tarball build in the `Tarball` field, `PrivPubRepos: "both"`, `TarballOrPkg: "both"`, `TestProdRepos: "production"` and click `Build`.
- This step also verifies sign files.
1. When it finishes run check: [releases-pkgs-check](https://jenkins.aws.isc.org/job/kea-dev/job/release-pkgs-check/).
1. [ ] Check that Docker images can be uploaded to Cloudsmith. Run [build-upload-docker](https://jenkins.aws.isc.org/job/kea-dev/job/build-upload-docker/).
* Make sure the right package job is selected under `Packages`.
* Tick `Upload`.
* Leave `TestProdRepos` to `testing`.
* Leave `versionTag` ticked.
* Tick `latestTag` if this is a stable or a maintenance release.
* If this is a stable or maintenance release, change `KeaDockerBranch` to the appropriate branch.
* Press `Build`.
1. [x] Build and upload Docker images to Cloudsmith. Run [build-upload-docker](https://jenkins.aws.isc.org/job/kea-dev/job/build-upload-docker/) with the same actions as above except change `TestProdRepos` to `production`.
1. [x] Update ReadTheDocs:
1. Trick ReadTheDocs into pulling the latest tags. Click `Build version` on [readthedocs.org](https://readthedocs.org/projects/kea/builds).
1. Publish currently released version. On the `Versions` tab, scroll down to `Activate a version`, search for `kea-a.b.c` and click `Activate`.
1. If it's a stable release, change the default version to point to this stable release. `Admin -> Advanced Settings -> Default version* -> Kea-a.b.c`.
1. [x] Create an issue and a merge request to bump up Kea version in `configure.ac` to next development version which could be, based on just released version `a.b.c`:
* `a.b.z-git` where `z == c + 1` most of the time, or
* `a.y.0-git` where `y == b + 2` if a new development series starts, or
* `x.1.0-git` where `x == a + 1` when the released minor version `b` is 9 and `a.b.c` was the last version in the development series and a new development version is coming up next.
1. [x] Contact Marketing team, and find a member who will continue work on this release:
1. [x] Assign this ticket to person who will continue.
1. [x] Share link to signing ticket either directly or as a comment in this issue.
## Marketing
1. [x] Publish links to downloads on ISC website.
1. [x] Update the supported versions document in the Salesforce portal (if there are stable versions released), and update the Kea document in the portal.
1. [x] If it is a new `major.minor` version, SWENG will have created a new repo in Cloudsmith, which will need the customer tokens migrated from an existing repo. Verify that the KB on installing from Cloudsmith has also been updated, then update the Kea document in the SF portal and notify support customers that this new private repo exists.
1. [x] If a new Cloudsmith repository is used, make sure that the Zapier scripts are updated.
* If those are not updated, there was an error made during preparation for new stable release. Please contact QA team and coordinate fix.
1. [x] Upload Premium hooks tarball to SendOwl. Create a new product if a new branch, otherwise update existing product. Send notifications to existing subscribers of the new version.
1. [x] Write release email to _kea-announce_.
1. [ ] Write email to _kea-users_ (if a major release).
1. [x] Announce on social media.
1. [x] Update [Wikipedia entry for Kea](https://en.wikipedia.org/wiki/Kea\_(software)).
1. [ ] Write blog article (if a major release).
1. [x] Update [Kea page on website if any new hooks](https://www.isc.org/kea/).
1. [ ] Update Kea Premium and Kea Subscription data sheets if any new hooks.
1. [x] Update [significant features matrix](https://kb.isc.org/docs/en/aa-01615) (if any significant new features).
1. [x] Contact Support team, find a person who will continue this release and assign this issue to them.
## Support
1. [x] Update tickets in case of waiting for support customers.
1. [x] Close this ticket
kea2.5.4
Darren Ankney
Darren Ankney
2023-11-29
https://gitlab.isc.org/isc-projects/kea/-/issues/3169
Sanity checks for Kea 2.4.1 rc2
2023-11-28T09:16:56Z
Andrei Pavel
andrei@isc.org
Sanity checks for Kea 2.4.1 rc2
We are now at step SANITY CHECKS of Kea 2.4.1 rc2.
Please verify the tarballs and packages according to [chapter `4. Sanity Checks` of the release procedure](https://gitlab.isc.org/isc-private/qa-dhcp/-/wikis/Kea/Release-Process#user-co...
We are now at step SANITY CHECKS of Kea 2.4.1 rc2.
Please verify the tarballs and packages according to [chapter `4. Sanity Checks` of the release procedure](https://gitlab.isc.org/isc-private/qa-dhcp/-/wikis/Kea/Release-Process#user-content-4-sanity-checks) and according to your imagination.
Before starting, please state what you are checking in a thread/discussion (not as comment).
When you finish a check, state in the same thread/discussion what the result is.
This way we know what is covered upfront and we can avoid repeating ourselves.
#### Tarballs on repo.isc.org
* `/data/shared/sweng/kea/releases/2.4.1-rc2`
* `/data/shared/sweng/kea/releases/premium-2.4.1-rc2`
* `/data/shared/sweng/kea/releases/subscription-2.4.1-rc2`
* `/data/shared/sweng/kea/releases/enterprise-2.4.1-rc2`
```
SHA256 (kea-2.4.1.tar.gz) = 815c61f5c271caa4a1db31dd656eb50a7f6ea973da3690f7c8581408e180131a
SHA256 (kea-enterprise-2.4.1.tar.gz) = 4831cef1d9dacc391ae289a028fd3817608492004017818495d98a7b06e94b7c
SHA256 (kea-premium-2.4.1.tar.gz) = 2b6cb95964dfc8188f9f7deffbd89803145aa69221ad96bc9bdca92918694843
SHA256 (kea-subscription-2.4.1.tar.gz) = 4d03d510e4bd82ca09850c11c71bb16f770b78f6d4b770881b725312413b5a91
```
#### Packages on packages.aws.isc.org
* [APK: 2.4.1-r20231123184533](https://packages.aws.isc.org/#browse/search/raw=format%3Draw%20AND%20name.raw%3D*r20231123184533.apk)
* [deb: 2.4.1-isc20231123184533](https://packages.aws.isc.org/#browse/search/apt=format%3Dapt%20AND%20version%3D2.4.1-isc20231123184533)
* [RPM: 2.4.1-isc20231123184533.\[os\]](https://packages.aws.isc.org/#browse/search/yum=format%3Dyum%20AND%20version%3D2.4.1-isc20231123184533*)
You can find the name for all the packages attached as build artifacts in the pkg job: https://jenkins.aws.isc.org/job/kea-2.4/job/pkg/27/
Instructions for installing packages are at point 9 of [chapter `4. Sanity Checks` of the release procedure](https://gitlab.isc.org/isc-private/qa-dhcp/-/wikis/Kea/Release-Process#user-content-4-sanity-checks).
kea2.4.1
2023-11-28
https://gitlab.isc.org/isc-projects/kea/-/issues/3166
fix build failures in unit tests on some systems
2023-11-23T18:38:39Z
Andrei Pavel
andrei@isc.org
fix build failures in unit tests on some systems
* CentOS 7:
```
23:04:15 /usr/include/c++/4.8.2/bits/stl_algo.h:2263:35: error: no match for call to ‘(isc::dhcp::test::GenericLeaseMgrTest::testLease6LeaseTypeCheck()::__lambda3)
(boost::shared_ptr<isc::dhcp::Lease6>&, const boost::sh...
* CentOS 7:
```
23:04:15 /usr/include/c++/4.8.2/bits/stl_algo.h:2263:35: error: no match for call to ‘(isc::dhcp::test::GenericLeaseMgrTest::testLease6LeaseTypeCheck()::__lambda3)
(boost::shared_ptr<isc::dhcp::Lease6>&, const boost::shared_ptr<isc::dhcp::Lease6>&)’
23:04:15 while (__comp(*__first, __pivot))
23:04:15 ^
23:04:15 generic_lease_mgr_unittest.cc:1621:25: note: candidates are:
23:04:15 auto compare = [](Lease6Ptr& left, Lease6Ptr& right) {
23:04:15 ^
23:04:15 In file included from /usr/include/c++/4.8.2/algorithm:62:0,
23:04:15 from /usr/include/boost/smart_ptr/shared_ptr.hpp:42,
23:04:15 from /usr/include/boost/shared_ptr.hpp:17,
23:04:15 from ../../../../src/lib/asiolink/io_service.h:11,
23:04:15 from ../../../../src/lib/database/database_connection.h:10,
23:04:15 from generic_lease_mgr_unittest.cc:10:
23:04:15 /usr/include/c++/4.8.2/bits/stl_algo.h:2263:35: note: bool (*)(isc::dhcp::Lease6Ptr&, isc::dhcp::Lease6Ptr&) {aka bool (*)(boost::shared_ptr<isc::dhcp::Lease6>&, boost::shared_ptr<isc::dhcp::Lease6>&)} <conversion>
23:04:15 while (__comp(*__first, __pivot))
23:04:15 ^
23:04:15 /usr/include/c++/4.8.2/bits/stl_algo.h:2263:35: note: candidate expects 3 arguments, 3 provided
23:04:15 generic_lease_mgr_unittest.cc:1621:60: note: isc::dhcp::test::GenericLeaseMgrTest::testLease6LeaseTypeCheck()::__lambda3
23:04:15 auto compare = [](Lease6Ptr& left, Lease6Ptr& right) {
23:04:15 ^
23:04:15 generic_lease_mgr_unittest.cc:1621:60: note: no known conversion for argument 2 from ‘const boost::shared_ptr<isc::dhcp::Lease6>’ to ‘isc::dhcp::Lease6Ptr& {aka boost::shared_ptr<isc::dhcp::Lease6>&}’
23:04:15 In file included from /usr/include/c++/4.8.2/algorithm:62:0,
23:04:15 from /usr/include/boost/smart_ptr/shared_ptr.hpp:42,
23:04:15 from /usr/include/boost/shared_ptr.hpp:17,
23:04:15 from ../../../../src/lib/asiolink/io_service.h:11,
23:04:15 from ../../../../src/lib/database/database_connection.h:10,
23:04:15 from generic_lease_mgr_unittest.cc:10:
```
* Fedora 38:
```
rdata_unittest.cc: In static member function ‘static std::string {anonymous}::Rdata_Unknown_Test::getLongestRdataTxt()’:
rdata_unittest.cc:257:16: error: ‘setw’ was not declared in this scope
257 | oss << setw(2) << (i & 0xff);
| ^~~~
rdata_unittest.cc:29:1: note: ‘std::setw’ is defined in header ‘<iomanip>’; did you forget to ‘#include <iomanip>’?
28 | #include <boost/lexical_cast.hpp>
+++ |+#include <iomanip>
29 |
make[7]: *** [Makefile:1159: run_unittests-rdata_unittest.o] Error 1
```
kea2.4.1
Andrei Pavel
andrei@isc.org
Andrei Pavel
andrei@isc.org
https://gitlab.isc.org/isc-projects/kea/-/issues/3165
fix TSAN warnings in ping_check hook library
2023-11-27T15:18:16Z
Razvan Becheriu
fix TSAN warnings in ping_check hook library
```
[ RUN ] PingChannelTest.sendReceiveMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000cd8 by thread T5:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail:...
```
[ RUN ] PingChannelTest.sendReceiveMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000cd8 by thread T5:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000cd8 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_sendReceiveMT_Test::TestBody() ping_channel_unittests.cc:513 (ping_check_unittests:x86_64+0x100058c99)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000c80 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_sendReceiveMT_Test::TestBody() ping_channel_unittests.cc:513 (ping_check_unittests:x86_64+0x100058c99)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b100000c740) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#5 (anonymous namespace)::PingChannelTest_sendReceiveMT_Test::TestBody() ping_channel_unittests.cc:513 (ping_check_unittests:x86_64+0x100058c99)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#9 (anonymous namespace)::PingChannelTest_sendReceiveMT_Test::TestBody() ping_channel_unittests.cc:513 (ping_check_unittests:x86_64+0x100058c99)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T5 (tid=1927107, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:273 (ping_check_unittests:x86_64+0x10005289e)
#7 (anonymous namespace)::PingChannelTest_sendReceiveMT_Test::TestBody() ping_channel_unittests.cc:513 (ping_check_unittests:x86_64+0x100058c99)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.sendReceiveMT (1254 ms)
```
```
[ RUN ] PingChannelTest.readExceptionErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000cd8 by thread T11:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000cd8 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_readExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:529 (ping_check_unittests:x86_64+0x10005e0ed)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000c80 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_readExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:529 (ping_check_unittests:x86_64+0x10005e0ed)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b100000e580) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#5 (anonymous namespace)::PingChannelTest_readExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:529 (ping_check_unittests:x86_64+0x10005e0ed)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#9 (anonymous namespace)::PingChannelTest_readExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:529 (ping_check_unittests:x86_64+0x10005e0ed)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T11 (tid=1927166, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:348 (ping_check_unittests:x86_64+0x1000591ca)
#7 (anonymous namespace)::PingChannelTest_readExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:529 (ping_check_unittests:x86_64+0x10005e0ed)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.readExceptionErrorMT (136 ms)
```
```
[ RUN ] PingChannelTest.readFatalErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000a58 by thread T15:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000a58 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_readFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:549 (ping_check_unittests:x86_64+0x10005ea63)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000a00 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_readFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:549 (ping_check_unittests:x86_64+0x10005ea63)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b1000012a00) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#5 (anonymous namespace)::PingChannelTest_readFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:549 (ping_check_unittests:x86_64+0x10005ea63)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#9 (anonymous namespace)::PingChannelTest_readFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:549 (ping_check_unittests:x86_64+0x10005ea63)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T15 (tid=1927170, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:348 (ping_check_unittests:x86_64+0x1000591ca)
#7 (anonymous namespace)::PingChannelTest_readFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:549 (ping_check_unittests:x86_64+0x10005ea63)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.readFatalErrorMT (68 ms)
```
```
[ RUN ] PingChannelTest.readAgainErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000cd8 by thread T16:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000cd8 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_readAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:571 (ping_check_unittests:x86_64+0x10005f49d)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000c80 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_readAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:571 (ping_check_unittests:x86_64+0x10005f49d)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b1000014dc0) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#5 (anonymous namespace)::PingChannelTest_readAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:571 (ping_check_unittests:x86_64+0x10005f49d)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#9 (anonymous namespace)::PingChannelTest_readAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:571 (ping_check_unittests:x86_64+0x10005f49d)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T16 (tid=1927171, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:273 (ping_check_unittests:x86_64+0x10005289e)
#7 (anonymous namespace)::PingChannelTest_readAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:571 (ping_check_unittests:x86_64+0x10005f49d)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.readAgainErrorMT (66 ms)
```
```
[ RUN ] PingChannelTest.writeExceptionErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000cd8 by thread T20:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000cd8 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_writeExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:592 (ping_check_unittests:x86_64+0x10005fe0d)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000c80 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_writeExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:592 (ping_check_unittests:x86_64+0x10005fe0d)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b1000012f80) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#5 (anonymous namespace)::PingChannelTest_writeExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:592 (ping_check_unittests:x86_64+0x10005fe0d)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#9 (anonymous namespace)::PingChannelTest_writeExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:592 (ping_check_unittests:x86_64+0x10005fe0d)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T20 (tid=1927176, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:348 (ping_check_unittests:x86_64+0x1000591ca)
#7 (anonymous namespace)::PingChannelTest_writeExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:592 (ping_check_unittests:x86_64+0x10005fe0d)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.writeExceptionErrorMT (66 ms)
```
```
[ RUN ] PingChannelTest.writeFatalErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000a58 by thread T26:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000a58 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_writeFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:612 (ping_check_unittests:x86_64+0x100060783)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000a00 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_writeFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:612 (ping_check_unittests:x86_64+0x100060783)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b1000013180) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#5 (anonymous namespace)::PingChannelTest_writeFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:612 (ping_check_unittests:x86_64+0x100060783)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#9 (anonymous namespace)::PingChannelTest_writeFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:612 (ping_check_unittests:x86_64+0x100060783)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T26 (tid=1927182, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:348 (ping_check_unittests:x86_64+0x1000591ca)
#7 (anonymous namespace)::PingChannelTest_writeFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:612 (ping_check_unittests:x86_64+0x100060783)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.writeFatalErrorMT (78 ms)
```
```
[ RUN ] PingChannelTest.writeAgainErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000cd8 by thread T27:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000cd8 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_writeAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:634 (ping_check_unittests:x86_64+0x1000611bd)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000c80 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_writeAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:634 (ping_check_unittests:x86_64+0x1000611bd)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b100000f200) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#5 (anonymous namespace)::PingChannelTest_writeAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:634 (ping_check_unittests:x86_64+0x1000611bd)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#9 (anonymous namespace)::PingChannelTest_writeAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:634 (ping_check_unittests:x86_64+0x1000611bd)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T27 (tid=1927183, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:273 (ping_check_unittests:x86_64+0x10005289e)
#7 (anonymous namespace)::PingChannelTest_writeAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:634 (ping_check_unittests:x86_64+0x1000611bd)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.writeAgainErrorMT (66 ms)
```
```
[ RUN ] PingChannelTest.writeSendFailedErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000a58 by thread T30:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000a58 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_writeSendFailedErrorMT_Test::TestBody() ping_channel_unittests.cc:682 (ping_check_unittests:x86_64+0x100062819)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000a00 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_writeSendFailedErrorMT_Test::TestBody() ping_channel_unittests.cc:682 (ping_check_unittests:x86_64+0x100062819)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b10000133c0) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#5 (anonymous namespace)::PingChannelTest_writeSendFailedErrorMT_Test::TestBody() ping_channel_unittests.cc:682 (ping_check_unittests:x86_64+0x100062819)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#9 (anonymous namespace)::PingChannelTest_writeSendFailedErrorMT_Test::TestBody() ping_channel_unittests.cc:682 (ping_check_unittests:x86_64+0x100062819)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T30 (tid=1927187, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:273 (ping_check_unittests:x86_64+0x10005289e)
#7 (anonymous namespace)::PingChannelTest_writeSendFailedErrorMT_Test::TestBody() ping_channel_unittests.cc:682 (ping_check_unittests:x86_64+0x100062819)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.writeSendFailedErrorMT (308 ms)
```
kea2.5.4
Razvan Becheriu
Razvan Becheriu