Kea issueshttps://gitlab.isc.org/isc-projects/kea/-/issues2023-12-06T18:16:33Zhttps://gitlab.isc.org/isc-projects/kea/-/issues/3161lease4-get-all has incorrect count in the case of multiple subnets2023-12-06T18:16:33ZDarren Ankneylease4-get-all has incorrect count in the case of multiple subnetsIt seems that in the case of `lease4-get-all` output, when there are multiple subnets with used addresses, that the final count only includes the number of leases from that subnet. (Please note: This is as reported by output obtained fr...It seems that in the case of `lease4-get-all` output, when there are multiple subnets with used addresses, that the final count only includes the number of leases from that subnet. (Please note: This is as reported by output obtained from version 2.2.1 by someone else. I don't personally have a way to confirm this as I don't have a way, in my testbed, to setup multiple subnets and have addresses used in all of them.)
For example:
subnet 1 has 10 addresses in use.
subnet 2 has 20 and
subnet 3 has 5
When performing a `lease4-get-all` without a "subnets" argument, all leases from all three subnets will be included but the final text will say this:
```
'result': 0,
'text': '5 IPv4 lease(s) found.'}]
```
even though the actual number of leases returned, confirmed by inspecting the output, is 35. See [SF1234](https://isc.lightning.force.com/lightning/r/Case/5007V00002WzraeQAB/view?0.source=alohaHeader) for full details.kea2.5.5Piotrek ZadrogaPiotrek Zadrogahttps://gitlab.isc.org/isc-projects/kea/-/issues/3106Ground work in the HA Service and Network State to support the hub-and-spoke ...2023-12-06T15:32:09ZMarcin SiodelskiGround work in the HA Service and Network State to support the hub-and-spoke modelThis issue extends the `HAService`, `HAImpl`, `HAConfig` and `NetworkState` to allow co-existence of multiple HA relationships in a single Kea server. It doesn't introduce any logic for the hub-and-spoke use case. It is just a ground wor...This issue extends the `HAService`, `HAImpl`, `HAConfig` and `NetworkState` to allow co-existence of multiple HA relationships in a single Kea server. It doesn't introduce any logic for the hub-and-spoke use case. It is just a ground work to eliminate the code that assumes existence of a single relationship.
See the [design](https://gitlab.isc.org/isc-projects/kea/-/wikis/Designs/hub-and-spoke-ha-mode#ground-work) for details.kea2.5.4Marcin SiodelskiMarcin Siodelskihttps://gitlab.isc.org/isc-projects/kea/-/issues/3182Avoid copy in range-based for loops2023-12-05T09:30:15ZFrancis DupontAvoid copy in range-based for loopsAs coverity reports there are some range-based for loops in Kea code where the range-expression (ab)using the `auto` keyword is copied at eache iterations when a better declaration (i.e. `const auto&`) works well with a better performanc...As coverity reports there are some range-based for loops in Kea code where the range-expression (ab)using the `auto` keyword is copied at eache iterations when a better declaration (i.e. `const auto&`) works well with a better performance (compilers should infer a better type but this is not specified for C++...).https://gitlab.isc.org/isc-projects/kea/-/issues/3128update hammer to build kea packages without freeradius dependency2023-12-05T09:23:28ZWlodzimierz Wencelupdate hammer to build kea packages without freeradius dependencyWith new radius we will no longer need freeradius dependency, remove it from hammerWith new radius we will no longer need freeradius dependency, remove it from hammerkea2.5.5Wlodzimierz WencelWlodzimierz Wencelhttps://gitlab.isc.org/isc-projects/kea/-/issues/3027Design for RADIUS refactoring2023-12-04T10:13:26ZTomek MrugalskiDesign for RADIUS refactoringWe need to substantially refactor (or more properly: rewrite large parts) the RADIUS hook, in particular get rid of the FreeRADIUS-client code.
For details, see [the RADIUS design on Kea wiki](https://gitlab.isc.org/isc-projects/kea/-/w...We need to substantially refactor (or more properly: rewrite large parts) the RADIUS hook, in particular get rid of the FreeRADIUS-client code.
For details, see [the RADIUS design on Kea wiki](https://gitlab.isc.org/isc-projects/kea/-/wikis/Designs/Multi-Threaded-RADIUS-Library-Refactored-with-its-own-RADIUS-Client).kea2.5.3https://gitlab.isc.org/isc-projects/kea/-/issues/3110ping-check-hook update HA peer(s) with lease declinations2023-12-01T16:56:45ZThomas Markwalderping-check-hook update HA peer(s) with lease declinationsThe design overlooked how HA update peers will be updated when leases are declined. The initial release may simply state the hook is experimental and doesn't work with HA.
Proposed solution:
Leases are marked decline via a function a...The design overlooked how HA update peers will be updated when leases are declined. The initial release may simply state the hook is experimental and doesn't work with HA.
Proposed solution:
Leases are marked decline via a function added to support
ping-checking, Dhcpv4Srv::serverDecline(). This function gets
invoked by the unpark callback if ping-check concluded the address
is unavailable (i.e. in use).
In order to propagate the declination to HA peers, a new hook point
will be added within this function, "lease4-server-decline". This
affords any hook library with an opportunity to take an action when
the server declines a lease. There is already a "lease4-decline" hook
point but this is for leases that are declined by clients via DHCPDECLINEs.
HA will need to implement a callout handler for this hook point which
propagates the update to the appropriate peer(s). Unlike updates done
via leases4_committed, there is no outbound response pending and
thus no need to park the query. Nor is there any need to wait for
the updates to be acknowledged.kea2.5.5Thomas MarkwalderThomas Markwalderhttps://gitlab.isc.org/isc-projects/kea/-/issues/31552.4.1 release checklist2023-11-29T21:04:03ZAndrei Pavelandrei@isc.org2.4.1 release checklist# Kea 2.4.1 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 act...# Kea 2.4.1 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. [x] 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. [x] Finish release notes and conduct its review.
1. [x] Notify support that release notes are ready for review. To avoid conflicts in edits wait with next step after review is done.
1. [x] 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` 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. [x] Chapter 1. Introduction
1. [x] On what platforms we are running tests using Jenkins? Update Supported Platforms in platforms.rst file.
1. [x] Did we add any additional 3rd party software? Update if needed.
1. [x] Is there a new tool installed in bin or sbin released this time? If yes, is it documented?
1. [x] Chapter 2. Quick Start
1. [x] Has the default installation process changed (for kea and hooks)? If yes, are those changes documented and highlighted in the release notes?
1. [x] Chapter 3. Installation
1. [x] 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. [x] Check and update Build Requirements.
1. [x] 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. [x] 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. [ ] 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. [ ] 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. [ ] 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 ticketkea2.4.1Darren AnkneyDarren Ankney2023-11-29https://gitlab.isc.org/isc-projects/kea/-/issues/3175Sanity checks for Kea 2.5.4 rc12023-11-29T17:29:00ZAndrei Pavelandrei@isc.orgSanity checks for Kea 2.5.4 rc1We 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.42023-11-29https://gitlab.isc.org/isc-projects/kea/-/issues/3177bump up version in configure.ac to 2.5.5-git2023-11-29T16:30:31ZAndrei Pavelandrei@isc.orgbump up version in configure.ac to 2.5.5-gitBump up version in configure.ac for %"kea2.5.5".Bump up version in configure.ac for %"kea2.5.5".kea2.5.5Andrei Pavelandrei@isc.orgAndrei Pavelandrei@isc.orghttps://gitlab.isc.org/isc-projects/kea/-/issues/3124Sanity checks for Kea 2.5.3 rc12023-11-28T14:49:23ZWlodzimierz WencelSanity checks for Kea 2.5.3 rc1We are now at step SANITY CHECKS of Kea 2.5.3 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.3 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.3-rc1`
* `/data/shared/sweng/kea/releases/premium-2.5.3-rc1`
* `/data/shared/sweng/kea/releases/subscription-2.5.3-rc1`
* `/data/shared/sweng/kea/releases/enterprise-2.5.3-rc1`
```
SHA256 (kea-2.5.3.tar.gz) = 075fea1ca59d302526b6ac2fa976a71af8d02ed7114a3a87258533171f57148e
SHA256 (kea-enterprise-2.5.3.tar.gz) = 9b1174e5b69a858b687816507a405d19a14ee8de175c0136bcfc6de958a00b95
SHA256 (kea-premium-2.5.3.tar.gz) = 06279c5191d7305e08f6549443567a537866660f81a27f5ec6354866d0480ba9
SHA256 (kea-subscription-2.5.3.tar.gz) = df13fcac556fb57b857d4b40b7dda042a7095c864bae186da7c0b26fbfb87a1e
```
#### Packages on packages.aws.isc.org
* [APK: 2.5.3-r20231023144813](https://packages.aws.isc.org/#browse/search/raw=format%3Draw%20AND%20name.raw%3D*r20231023144813.apk)
* [deb: 2.5.3-isc20231023144813](https://packages.aws.isc.org/#browse/search/apt=format%3Dapt%20AND%20version%3D2.5.3-isc20231023144813)
* [RPM: 2.5.3-isc20231023144813.\[os\]](https://packages.aws.isc.org/#browse/search/yum=format%3Dyum%20AND%20version%3D2.5.3-isc20231023144813*)
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/1327/
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).https://gitlab.isc.org/isc-projects/kea/-/issues/3126Sanity checks for Kea 2.5.3 rc22023-11-28T14:49:23ZWlodzimierz WencelSanity checks for Kea 2.5.3 rc2We are now at step SANITY CHECKS of Kea 2.5.3 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.5.3 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.5.3-rc2`
* `/data/shared/sweng/kea/releases/premium-2.5.3-rc2`
* `/data/shared/sweng/kea/releases/subscription-2.5.3-rc2`
* `/data/shared/sweng/kea/releases/enterprise-2.5.3-rc2`
```
SHA256 (kea-2.5.3.tar.gz) = bb7cf06af1cc27da0d55d071651b75018e898d14c9f6e2e837ee0515006f6fef
SHA256 (kea-enterprise-2.5.3.tar.gz) = 07a155679e80bdb743d48c80e1807f09f76b92121d4ad42c2d7f0dc51ae1679a
SHA256 (kea-premium-2.5.3.tar.gz) = e1775673d6f4d681d404e284eeac560abae63c76bcde5de55fcddd1ffd22bb53
SHA256 (kea-subscription-2.5.3.tar.gz) = dc9c9bf185e5de46d406d3ca5fe2b8c16b98f2a21fb4bb21e87b990337cb384f
```
#### Packages on packages.aws.isc.org
* [APK: 2.5.3-r20231024153937](https://packages.aws.isc.org/#browse/search/raw=format%3Draw%20AND%20name.raw%3D*r20231024153937.apk)
* [deb: 2.5.3-isc20231024153937](https://packages.aws.isc.org/#browse/search/apt=format%3Dapt%20AND%20version%3D2.5.3-isc20231024153937)
* [RPM: 2.5.3-isc20231024153937.\[os\]](https://packages.aws.isc.org/#browse/search/yum=format%3Dyum%20AND%20version%3D2.5.3-isc20231024153937*)
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/1329/
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.3https://gitlab.isc.org/isc-projects/kea/-/issues/3174Changes for Kea 2.5.4 release2023-11-28T13:38:22ZAndrei Pavelandrei@isc.orgChanges 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 yearskea2.5.4Andrei Pavelandrei@isc.orgAndrei Pavelandrei@isc.orghttps://gitlab.isc.org/isc-projects/kea/-/issues/3017[kea_2.4.0]New monitor interface added in kea conf but dhcp4 server can't det...2023-11-28T09:30:37Zchen sijie[kea_2.4.0]New monitor interface added in kea conf but dhcp4 server can't detect the new added interface---
name: Bug report
about: Create a report to help us improve
---
If you believe your bug report is a security issue (e.g. a packet that can kill the server), DO NOT REPORT IT HERE. Please use https://www.isc.org/community/report-bug/...---
name: Bug report
about: Create a report to help us improve
---
If you believe your bug report is a security issue (e.g. a packet that can kill the server), DO NOT REPORT IT HERE. Please use https://www.isc.org/community/report-bug/ instead or send mail to security-office(at)isc(dot)org.
**Describe the bug**
New monitor interface added in kea conf file but dhcp4 server can't detect the new added interface.
**To Reproduce**
In our project we used kea as our dhcp server and did some second develop work. Below test scenario
failed after upgrade kea from 2.2.0 to 2.4.0.
Steps to reproduce the behavior:
1. Prepare kea conf file and until waiting one running interface to start dhcp4 server.
In this place we can find fhmintbre in RUNNING state and dhcp4server also startup normally.
2. After step1, a new interface fhmintbrc become running,then our service prepare one new conf file, in this file
interface parameter with both fhmintbre and fhmintbrc.
3. Because kea conf file update in our code logical, we need to reload dhcp4server, after reload the dhcp4server can't start.
the log info as "Failed to selecnterface: interface 'fhmintbrc' doesn't exist in the system (/tmp/kea-dhcp4.conf:42:17)"
Seems dhcp4server still used the old conf file didn't get the new conf with fhmintbrc info.
This scenario case work normally in kea 2.2.0. Can you help to check this issue?
**Expected behavior**
dhcp4server startup should use the latest kea-dhcp.conf file after new running interface added, but now we found
dhcp4server still used the old copy.
**Environment:**
- Kea version: kea 2.4.0
- OS: [e.g. Ubuntu 16.04 x64]
- Which features were compiled in (in particular which backends)
- If/which hooks where loaded in
**Additional Information**
Log info print in our env:
```
<14>1 2023-08-22T15:23:36.905286+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - Send dhcp readiness ack: status(SUCCESS):0, hoste: nescran6-dhcp-server-0
<15>1 2023-08-22T15:23:38.584740+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - Readiness fd reveived (IN) callback.
<15>1 2023-08-22T15:23:38.584831+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - hwinfoprovider data provider callback, path: [/na-hwinfo:hwinfo], request_xpath: [/nokia-hwinfo:hwinfo], module: [nokia-hwinfo]
<14>1 2023-08-22T15:23:38.584865+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - hwinfoprovider data provider: [{"nokia-hwinfo:hwo":{"readiness":[{"owner":"nescran6-dhcp-server-0","check-list":[0,1,2],"states":[{"type":2,"last-updated":"2023-08-22T23:23:36.900+08:00"}]}]}}]
<14>1 2023-08-22T15:26:18.863022+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintune0, index:6) upd event. flags:4098
<14>1 2023-08-22T15:26:18.863130+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintune0, index:6) upd event. flags:4098
<14>1 2023-08-22T15:26:18.970545+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintune0, index:6) upd event. flags:69699
<14>1 2023-08-22T15:26:19.305565+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintbre, index:7) updaevent. flags:4098
<14>1 2023-08-22T15:26:19.879863+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintune0, index:6) upd event. flags:69699
<14>1 2023-08-22T15:26:19.879984+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintune0, index:6) upd event. flags:69699
<14>1 2023-08-22T15:26:19.880041+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintbre, index:7) updaevent. flags:4098
<14>1 2023-08-22T15:26:19.880094+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintbre, index:7) updaevent. flags:4098
<14>1 2023-08-22T15:26:19.880160+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintbre, index:7) updaevent. flags:4098
<14>1 2023-08-22T15:26:20.473274+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: ip address(iface index:7) update event.ags:128
<14>1 2023-08-22T15:26:21.205540+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintbre, index:7) updaevent. flags:69635
<14>1 2023-08-22T15:26:21.205630+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintbre, index:7) updaevent. flags:69699
<14>1 2023-08-22T15:26:21.205691+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - Interface index(7) sate change to RUNNING
<14>1 2023-08-22T15:26:22.908112+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - DHCP server inactive.
<14>1 2023-08-22T15:26:23.005806+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - Start dhcp4 server success with cmd: genapiloggeat --ident dhcp4server -- /usr/sbin/kea-dhcp4 -c /tmp/kea-dhcp4.conf &
<14>1 2023-08-22T15:26:23.905870+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:23.905 INFO [kea-dhcp4.dhcp43.140102015412096] DHCP4_STARTING Kea DHCPv4 server version 2.4.0 (stable) starting
<14>1 2023-08-22T15:26:23.907140+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:23.907 INFO [kea-dhcp4.hosts3.140102015412096] HOSTS_BACKENDS_REGISTERED the following host backend types are available: postgresql
<14>1 2023-08-22T15:26:23.907517+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:23.907 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_ADD_IFACE listening on interface fhmintbre
<14>1 2023-08-22T15:26:23.907550+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:23.907 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_SOCKET_TYPE_DEFAULT "dhcp-socket-type" not specified , using default socket type raw
<14>1 2023-08-22T15:26:23.908007+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:23.907 INFO [kea-dhcp4.hooks3.140102015412096] HOOKS_LIBRARY_CLOSED hooks library /usr/lib64/libkea4hook.so successfully closed
<14>1 2023-08-22T15:26:23.908186+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:23.908 WARN [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CONFIGURED_SUBNET_WITHOUT_ID a subnet was configured without an id: 50.50.0.0/24
<14>1 2023-08-22T15:26:23.908205+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:23.908 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_NEW_SUBNET4 a new subnet has been added to configuration: 50.50.0.0/24 with params: valid-liime=300
<14>1 2023-08-22T15:26:23.908328+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:23.908 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_NEW_SUBNET4 a new subnet has been added to configuration: 50.50.1.0/24 with params: valid-liime=300
<14>1 2023-08-22T15:26:23.908421+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:23.908 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_NEW_SUBNET4 a new subnet has been added to configuration: 50.50.2.0/24 with params: valid-liime=300
<14>1 2023-08-22T15:26:23.908511+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:23.908 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_NEW_SUBNET4 a new subnet has been added to configuration: 50.50.3.0/24 with params: valid-liime=300
<14>1 2023-08-22T15:26:24.005271+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.005 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_NEW_SUBNET4 a new subnet has been added to configuration: 50.50.4.0/24 with params: valid-liime=300
<14>1 2023-08-22T15:26:24.005454+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.005 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_NEW_SUBNET4 a new subnet has been added to configuration: 50.50.5.0/24 with params: valid-liime=300
<14>1 2023-08-22T15:26:24.005638+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.005 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_NEW_SUBNET4 a new subnet has been added to configuration: 50.50.6.0/24 with params: valid-liime=300
<14>1 2023-08-22T15:26:24.005809+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.005 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_NEW_SUBNET4 a new subnet has been added to configuration: 60.60.1.0/24 with params: valid-liime=300
<14>1 2023-08-22T15:26:24.006040+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.006 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_SOCKET_TYPE_SELECT using socket type raw
<14>1 2023-08-22T15:26:24.006528+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.006 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_ADD_IFACE listening on interface fhmintbre
<14>1 2023-08-22T15:26:24.006563+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.006 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_SOCKET_TYPE_DEFAULT "dhcp-socket-type" not specified , using default socket type raw
<14>1 2023-08-22T15:26:24.007242+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.007 INFO [kea-dhcp4.hooks3.140102015412096] HOOKS_LIBRARY_LOADED hooks library /usr/lib64/libkea4hook.so successfully loaded
<14>1 2023-08-22T15:26:24.007270+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.007 INFO [kea-dhcp4.dhcp43.140102015412096] DHCP4_CONFIG_COMPLETE DHCPv4 server has completed configuration: added IPv4 subnets: 8; DDNS: disabled
<14>1 2023-08-22T15:26:24.107592+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.107 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_MEMFILE_DB opening memory file lease database: lfc-interval=3600 max-row-errors=100 name=/var/log/kleasesdb/kea-leases4.csv persist=true type=memfile universe=4
<14>1 2023-08-22T15:26:24.207168+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.207 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_MEMFILE_LEASE_FILE_LOAD loading leases from file /var/log/kea-leasesdb/kea-leases4.csv
<14>1 2023-08-22T15:26:24.229966+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.229 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_MEMFILE_EXTRACT_EXTENDED_INFO4 extracting extended info saw 0 leases, extended info sanity checks mfied 0 / updated 0 leases and 0 leases have relay or remote id
<14>1 2023-08-22T15:26:24.229991+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.229 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_MEMFILE_LFC_SETUP setting up the Lease File Cleanup interval to 3600 sec
<14>1 2023-08-22T15:26:24.313526+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.313 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_USE_ALLOCATOR using the iterative allocator for V4 leases in subnet 50.50.0.0/24
<14>1 2023-08-22T15:26:24.313558+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.313 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_USE_ALLOCATOR using the iterative allocator for V4 leases in subnet 50.50.1.0/24
<14>1 2023-08-22T15:26:24.313576+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.313 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_USE_ALLOCATOR using the iterative allocator for V4 leases in subnet 50.50.2.0/24
<14>1 2023-08-22T15:26:24.313590+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.313 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_USE_ALLOCATOR using the iterative allocator for V4 leases in subnet 50.50.3.0/24
<14>1 2023-08-22T15:26:24.313604+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.313 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_USE_ALLOCATOR using the iterative allocator for V4 leases in subnet 50.50.4.0/24
<14>1 2023-08-22T15:26:24.313618+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.313 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_USE_ALLOCATOR using the iterative allocator for V4 leases in subnet 50.50.5.0/24
<14>1 2023-08-22T15:26:24.313639+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.313 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_USE_ALLOCATOR using the iterative allocator for V4 leases in subnet 50.50.6.0/24
<14>1 2023-08-22T15:26:24.313654+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.313 INFO [kea-dhcp4.dhcps463.140102015412096] DHCPSRV_CFGMGR_USE_ALLOCATOR using the iterative allocator for V4 leases in subnet 60.60.1.0/24
<14>1 2023-08-22T15:26:24.314034+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.313 WARN [kea-dhcp4.dhcp43.140102015412096] DHCP4_MULTI_THREADING_INFO enabled: no, number of threads: 0, queue size: 0
<14>1 2023-08-22T15:26:24.314114+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.314 INFO [kea-dhcp4.dhcp43.140102015412096] DHCP4_STARTED Kea DHCPv4 server version 2.4.0 started
<14>1 2023-08-22T15:26:24.314292+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.314 ERROR [kea-dhcp4.packe463.140102015412096] DHCP4_BUFFER_RECEIVE_FAIL error on attempt to receive packet: Truncated DHCPv4 packet (len=55) received, atast 236 is expected.
<14>1 2023-08-22T15:26:24.314346+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.314 ERROR [kea-dhcp4.packe463.140102015412096] DHCP4_BUFFER_RECEIVE_FAIL error on attempt to receive packet: Truncated DHCPv4 packet (len=108) received, aeast 236 is expected.
<14>1 2023-08-22T15:26:24.314430+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.314 ERROR [kea-dhcp4.packe463.140102015412096] DHCP4_BUFFER_RECEIVE_FAIL error on attempt to receive packet: Truncated DHCPv4 packet (len=32) received, atast 236 is expected.
<14>1 2023-08-22T15:26:24.314487+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:24.314 ERROR [kea-dhcp4.packe463.140102015412096] DHCP4_BUFFER_RECEIVE_FAIL error on attempt to receive packet: Truncated DHCPv4 packet (len=12) received, atast 236 is expected.
<14>1 2023-08-22T15:26:35.569350+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintunc0, index:8) upd event. flags:4098
<14>1 2023-08-22T15:26:35.569495+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintunc0, index:8) upd event. flags:4098
<14>1 2023-08-22T15:26:35.672859+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintunc0, index:8) upd event. flags:69699
<14>1 2023-08-22T15:26:35.977884+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintbrc, index:9) updaevent. flags:4098
<14>1 2023-08-22T15:26:36.505480+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintbrc, index:9) updaevent. flags:69699
<14>1 2023-08-22T15:26:36.505604+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - Interface index(9) sate change to RUNNING
<14>1 2023-08-22T15:26:37.270782+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintunc0, index:8) upd event. flags:69699
<14>1 2023-08-22T15:26:37.305261+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintunc0, index:8) upd event. flags:69699
<14>1 2023-08-22T15:26:37.305334+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintbrc, index:9) updaevent. flags:69699
<14>1 2023-08-22T15:26:37.305384+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintbrc, index:9) updaevent. flags:69699
<14>1 2023-08-22T15:26:37.305439+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintbrc, index:9) updaevent. flags:69699
<14>1 2023-08-22T15:26:37.305482+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: interface(name:fhmintbrc, index:9) updaevent. flags:69699
<14>1 2023-08-22T15:26:37.965480+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - netlink: ip address(iface index:9) update event.ags:128
dhcpmanager[9]: INFO/keactrl: Reloading kea-dhcp4...
<14>1 2023-08-22T15:26:38.907204+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:38.907 INFO [kea-dhcp4.dhcp43.140102015412096] DHCP4_DYNAMIC_RECONFIGURATION initiate server reconfiguration using file: /tmp/kea-dhcp4.conf, after receivinIGHUP signal or config-reload command
<14>1 2023-08-22T15:26:38.907997+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:38.907 INFO [kea-dhcp4.hosts3.140102015412096] HOSTS_BACKENDS_REGISTERED the following host backend types are available: postgresql
<14>1 2023-08-22T15:26:39.005586+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:39.005 ERROR [kea-dhcp4.dhcp43.140102015412096] DHCP4_PARSER_FAIL failed to create or run parser for configuration element interfaces-config: Failed to selecnterface: interface 'fhmintbrc' doesn't exist in the system (/tmp/kea-dhcp4.conf:42:17) (/tmp/kea-dhcp4.conf:40:13)
<14>1 2023-08-22T15:26:39.005683+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:39.005 FATAL [kea-dhcp4.dhcp43.140102015412096] DHCP4_CONFIG_UNRECOVERABLE_ERROR DHCPv4 server new configuration failed with an error which cannot be recover
<14>1 2023-08-22T15:26:39.005752+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:39.005 ERROR [kea-dhcp4.dhcp43.140102015412096] DHCP4_CONFIG_LOAD_FAIL configuration error using file: /tmp/kea-dhcp4.conf, reason: Failed to select interfacinterface 'fhmintbrc' doesn't exist in the system (/tmp/kea-dhcp4.conf:42:17) (/tmp/kea-dhcp4.conf:40:13)
<14>1 2023-08-22T15:26:39.005943+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:39.005 FATAL [kea-dhcp4.dhcp43.140102015412096] DHCP4_DYNAMIC_RECONFIGURATION_FAIL dynamic server reconfiguration failed with file: /tmp/kea-dhcp4.conf
dhcpmanager[9]: INFO/keactrl: kea-dhcp6 isn't running.
dhcpmanager[9]: INFO/keactrl: kea-dhcp-ddns isn't running.
dhcpmanager[9]: INFO/keactrl: kea-ctrl-agent isn't running.
<14>1 2023-08-22T15:26:40.007603+08:00 nescran6-dhcp-server-0 dhcpmanager 9 - - Reload dhcp4 server success with cmd: /usr/sbin/ctrl reload -c /tmp/keactrl.conf
dhcpmanager[9]: INFO/keactrl: Reloading kea-dhcp4...
<14>1 2023-08-22T15:26:43.008206+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:43.008 INFO [kea-dhcp4.dhcp43.140102015412096] DHCP4_DYNAMIC_RECONFIGURATION initiate server reconfiguration using file: /tmp/kea-dhcp4.conf, after receivinIGHUP signal or config-reload command
<14>1 2023-08-22T15:26:43.009047+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:43.008 INFO [kea-dhcp4.hosts3.140102015412096] HOSTS_BACKENDS_REGISTERED the following host backend types are available: postgresql
<14>1 2023-08-22T15:26:43.105606+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:43.105 ERROR [kea-dhcp4.dhcp43.140102015412096] DHCP4_PARSER_FAIL failed to create or run parser for configuration element interfaces-config: Failed to selecnterface: interface 'fhmintbrc' doesn't exist in the system (/tmp/kea-dhcp4.conf:42:17) (/tmp/kea-dhcp4.conf:40:13)
<14>1 2023-08-22T15:26:43.105632+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:43.105 FATAL [kea-dhcp4.dhcp43.140102015412096] DHCP4_CONFIG_UNRECOVERABLE_ERROR DHCPv4 server new configuration failed with an error which cannot be recover
<14>1 2023-08-22T15:26:43.205210+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:43.105 ERROR [kea-dhcp4.dhcp43.140102015412096] DHCP4_CONFIG_LOAD_FAIL configuration error using file: /tmp/kea-dhcp4.conf, reason: Failed to select interfacinterface 'fhmintbrc' doesn't exist in the system (/tmp/kea-dhcp4.conf:42:17) (/tmp/kea-dhcp4.conf:40:13)
<14>1 2023-08-22T15:26:43.205239+08:00 nescran6-dhcp-server-0 dhcp4server 455 - - 2023-08-22 15:26:43.105 FATAL [kea-dhcp4.dhcp43.140102015412096] DHCP4_DYNAMIC_RECONFIGURATION_FAIL dynamic server reconfiguration failed with file: /tmp/kea-dhcp4.conf
dhcpmanager[9]: INFO/keactrl: kea-dhcp6 isn't running.
dhcpmanager[9]: INFO/keactrl: kea-dhcp-ddns isn't running.
dhcpmanager[9]: INFO/keactrl: kea-ctrl-agent isn't running.
```
**Contacting you**
sijie.chen@nokia-sbell.com
Andrei: edited the **Additional Information** section to be readable.kea2.5.3Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/3169Sanity checks for Kea 2.4.1 rc22023-11-28T09:16:56ZAndrei Pavelandrei@isc.orgSanity checks for Kea 2.4.1 rc2We 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.12023-11-28https://gitlab.isc.org/isc-projects/kea/-/issues/3173Bump up library versions for 2.5.42023-11-28T09:10:54ZAndrei Pavelandrei@isc.orgBump up library versions for 2.5.4Bump up library versions for %"kea2.5.4".Bump up library versions for %"kea2.5.4".kea2.5.4Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/3121HA scenario: some devices keep sending DHCP requests2023-11-27T17:49:20ZdotsoltectiHA scenario: some devices keep sending DHCP requests---
name: Bug report
about: Some clients keep sending DHCP requests in a HA setup, in single server setup they don't
---
**Describe the bug**
Two clients in my network keep sending DHCP requests when using 2 kea dhcp4-servers in a HA s...---
name: Bug report
about: Some clients keep sending DHCP requests in a HA setup, in single server setup they don't
---
**Describe the bug**
Two clients in my network keep sending DHCP requests when using 2 kea dhcp4-servers in a HA setup. This results in those 2 clients not being connected. When running 1 kea dhcp4-server (without HA configuration) the two clients work perfectly fine.
**To Reproduce**
Steps to reproduce the behavior:
1. Start kea dhcp4-server and control agent on 2 hosts (1 Debian bullseye; 1 Odroid C4) in Docker containers using this compose file[docker-compose.yml](/uploads/de75b17bfe9fe5d299a5a7e9b24b6bb8/docker-compose.yml) and configuration files [ctrl-agent.json](/uploads/d03fb3c809be7801c090a926299fd009/ctrl-agent.json), [dhcp4_HA.json](/uploads/13b888a95714c3e810ce6a4b1c9322e2/dhcp4_HA.json)
2. The server starts fine, heartbeats work fine, most of the clients are working as expected.
3. Two clients (same manufacturer) keep sending DHCP requests. The result seem that those 2 clients are unable to connect to the network. For example the devices with MAC address 1c:ca:e3:7a:60:8c in this log: [_kea-dhcp4_logs_6_.txt](/uploads/49a209571159a112e12eb17b5114c850/_kea-dhcp4_logs_6_.txt). Log file does not seem to throw any relevant errors.
**Expected behavior**
Two clients should be able to connect even in HA setup.
**Environment:**
- Kea version: 2.4.0
- OS: Docker images on 1) Debian Bullseye host and 2) Odroid C4 with Armbian 23.02.2 Bullseye
**Additional Information**
Configuration files are attached above, but always available to provide more information.
**Contacting you**
How can ISC reach you to discuss this matter further? Via e-mail: h37dcmrr@duck.comhttps://gitlab.isc.org/isc-projects/kea/-/issues/3165fix TSAN warnings in ping_check hook library2023-11-27T15:18:16ZRazvan Becheriufix 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.4Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/3084ping-check-hook-task-6 Integrate PingCheckMgr into hook proper2023-11-27T12:26:45ZThomas Markwalderping-check-hook-task-6 Integrate PingCheckMgr into hook properIntegrate PingCheckMgr into the ping-check library callouts
https://gitlab.isc.org/isc-projects/kea/-/wikis/Designs/ping-check
When complete the ping-check hook library should be fully functional,
managing a PingCheckMgr singleton via ...Integrate PingCheckMgr into the ping-check library callouts
https://gitlab.isc.org/isc-projects/kea/-/wikis/Designs/ping-check
When complete the ping-check hook library should be fully functional,
managing a PingCheckMgr singleton via hook callouts. It should unpark
packets and/or decline leases when appropriate.
Depends on #3083kea2.5.4Thomas MarkwalderThomas Markwalderhttps://gitlab.isc.org/isc-projects/kea/-/issues/3109Logging inconsistency between dhcp4.packets and dhcp6.packets2023-11-27T11:53:16ZDarren AnkneyLogging inconsistency between dhcp4.packets and dhcp6.packetsThis log for DHCPv4:
```
[kea-dhcp4.packets/2921701.140031672309504] DHCP4_QUERY_DATA [hwtype=1 00:00:00:ff:ff:ff], cid=[00:00:00:00:ff:ff:ff:ff:ff:ff:ff], tid=0x8eabb73f, packet details: local_address=1.2.3.4:67, remote_address=1.2.3.5:...This log for DHCPv4:
```
[kea-dhcp4.packets/2921701.140031672309504] DHCP4_QUERY_DATA [hwtype=1 00:00:00:ff:ff:ff], cid=[00:00:00:00:ff:ff:ff:ff:ff:ff:ff], tid=0x8eabb73f, packet details: local_address=1.2.3.4:67, remote_address=1.2.3.5:68, msg_type=DHCPREQUEST (3), transid=0x8eabb73f,
```
contains the msg_type while the DHCPv6 counterpart does not:
```
[kea-dhcp6.packets/3264085.139762203666176] DHCP6_QUERY_DATA duid=[00:00:00:00:ff:ff:ff:ff:ff:ff:ff], tid=0x5f541f, packet details: localAddr=[1:1:1:1::1]:0 remoteAddr=[2:2:2:2::2]:547
```
Similar inconsistency in these two log messages:
```
[kea-dhcp4.packets/2921701.140031535531776] DHCP4_RESPONSE_DATA [hwtype=1 00:00:00:ff:ff:ff], cid=[00:00:00:00:ff:ff:ff:ff:ff:ff:ff], tid=0xfe456e5f: responding with packet DHCPACK (type 5), packet details: local_address=1.2.3.4:67, remote_address=1.2.3.5:68, msg_type=DHCPACK (5), transid=0xfe456e5f,
```
and
```
[kea-dhcp6.packets/3264085.139762070353664] DHCP6_RESPONSE_DATA responding with packet type 7 data is localAddr=[1:1:1:1::1]:547 remoteAddr=[2:2:2:2::2]:547
```
Perhaps this is this way for a reason? There are, of course, differences between DHCPv4 and DHCPv6.
[SF1375](https://isc.lightning.force.com/lightning/r/Case/5007V00002YkWE4QAN/view)kea2.5.4Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/2442Radius hooks documentation update2023-11-27T09:45:01ZPeter DaviesRadius hooks documentation updateRadius hooks documentation update:
Describing that leases obtained from IP addresses supplied by a Radius Server
are handled as Host Reservations and the implications that may have for pool
definitions.
Also if there are any th...Radius hooks documentation update:
Describing that leases obtained from IP addresses supplied by a Radius Server
are handled as Host Reservations and the implications that may have for pool
definitions.
Also if there are any thoughts regarding the use of Radius with HA servers
configured in load-balancing modekea2.5.4Andrei Pavelandrei@isc.orgAndrei Pavelandrei@isc.org