Conan default package id mode considered harmful#215
Merged
Conversation
…tion fault seen with default semver_direct_mode due to incompatibility between nmos-cpp built with boost/1.77.0 linked with cpprestsdk/2.10.18 built with boost/1.76.0
Contributor
Author
|
Since the mode affects the binary package ids, this has the downside that packages cannot be downloaded from Conan Center Index and must be built locally. Without further work, builds on GitHub Actions are all going to take a lot longer, about an hour rather than 30 minutes. I think the solution would be to use the Conan Cache GitHub Action. |
garethsb
added a commit
to garethsb/nmos-cpp
that referenced
this pull request
Jan 21, 2022
…boost) If this works out, the guidance in Dependencies.md could be updated...
garethsb
added a commit
to garethsb/nmos-cpp
that referenced
this pull request
Jan 21, 2022
…boost) If this works out, the guidance in Dependencies.md could be updated...
garethsb
added a commit
to garethsb/nmos-cpp
that referenced
this pull request
Apr 28, 2022
* for build and dependencies, e.g. sony#197, sony#198, sony#207, sony#211, sony#215, sony#229, sony#230, sony#235, sony#243 * for SDP parser/generator, e.g. sony#201, sony#205, sony#219, sony#241, sony#242, sony#244 * for RQL, e.g. sony#224 * for CI tests, e.g. sony#218, sony#231, sony#239, sony#250
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The build-test #297 logs show that bumping Boost from 1.76.0 to 1.77.0 caused nmos-cpp-node to terminate with a segmentation fault on Ubuntu 18.04 and 20.04.
This is because by default Conan assumes semver compatibility. Boost and other C++ libraries do not meet this expectation and break ABI compatibility between e.g. minor versions. The recipes in Conan Center Index do not generally customize their
package_idmethod to take this into account.Conan outputs this message in the log, but it's highly misleading!
The cpprestsdk binary package used is still one built against Boost 1.76.0. When nmos-cpp(-node) is then built against Boost 1.77.0, this results in a seg fault.
A workaround is to change Conan's default package id mode to
minor_modeor a stricter mode such asrecipe_revision_mode.conan config set general.default_package_id_mode=minor_modeI wish there were something better we could do than put this in CI and documentation, but I haven't come up with anything.