Skip to content

v2.0.3

Compare
Choose a tag to compare
@drakenclimber drakenclimber released this 20 Jan 23:02
· 915 commits to main since this release
v2.0.3

This release is no longer supported upstream, please use a more recent release

Github Releases (by Release)

Note

This is scheduled to be the last release in the release-2.0 branch of libcgroup. Users are recommended to transition to the next release of the release-3.0 branch once v3.0.1 is available. (I am anticipating v3.0.1 being released in early spring 2023.) v3.0.1 will have systemd support, full cgroup v2 support, cgroup v1/v2 abstraction layer, and much more automated testing and code coverage. Note that v3.0.x is not guaranteed to be backward compatible with v2.0.x, but at this time I don't know of any changes that have broken backward compatibility. Caveat emptor as always :).

ChangeLog

  • Version 2.0.3 - January 20, 2023
    • Fix many issues identified by Coverity static analysis
    • Fix potential segfault in cgroup_attach_task_pid()
    • Add man page updates for tools (lscgroup and lssubsys) that are only supported on cgroup v1
    • Fix controller name collisions (e.g. cpuset vs cpu) when analyzing cgroup v1 mounts
    • Implement minor automake improvements like using the DIST_SUBDIRS directive

Checksum

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

b29b5704de3d0fadf199fe4e17eeeaecba7f0dd1b85569c96eec37c7672e3026  libcgroup-2.0.3.tar.gz
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEER6aPzjfH1wJP1l4RNWzmLCtSQJkFAmPK22wACgkQNWzmLCtS
QJk/WA//brAOLBXM8/I6+lbE/CGvFQFBeyIeyPQyaTSxOXJVcJfCu6qLZ7D2MQCD
iqHXb+bx9O6WywkoVwU+3Ljng1f8wTEW8MmW3fvXMR5+sSO5wffe7jLaECjFkR5m
i9qDkhoz+iu2gHmCREv3pWLw6HKZ0wWX8pR9rbGEO+veHM3brDQ0IXT7n/rcUOdO
iBmKiTYoXyK2Mq9iIYmeKDhMvj/xbIHJWt/Bbhz/9ckPF8CpoGt21mUSF8h9k/Wo
f+KYXjB7WJM3Wy3dRNRfYLGZAAKOwMy4F6KdWDDYk8rp67Hdkb+7t9ZTl1lAmTuH
fy9fDJjpJkT1nseVT5LVUQqH1ZKnhTtrAQ/ZzTWTgHVygiMcUi2yDn46+FXYPcY5
kPUKevXl+pPAs75cKw3GxLYO+Ca4bzR3feqEQqOgNQbY2dHTpLSaf0Z1Y8zGSYIA
XX6Az1UBSQLrYE0A4be5WMWa1RQXpwH1PMprVwiiOEOi2o6uuPx2rfdT2HIVxgvl
uv34hqlCa61SWkYWjonMZQnuNIQNaez4JhddjrdJg1WecVq6e4lNaoD0O6izRHQ5
Nz2y5W0MtducNWAC5YaIUXRKw12Pmal+OZwgTPTadCcMixaBrvAzYKFOqTg5fuT1
6UAldkeL171e/YvD2tWMCvnF5xGFnkR4wiwOVlVrA9ivCOpd9aw=
=wFeG
-----END PGP SIGNATURE-----

Note while building:

This release utilizes both unit and functional tests - googletest for unit testing and a small python framework for functional testing. The functional tests can be run in a container or on a bare-metal machine. By default, all unit and all functional tests are enabled. The bare metal tests will alter your cgroup hierarchy, and I strongly encourage running them on a temporary VM or other "disposable" machine. They should not be destructive, but cgroups are obviously a critical building block of a Linux system, and I would hate to see a critical machine harmed.

To completely disable the containerized functional tests:

  • Comment out the ./ftests.py line in ftests.sh

To completely disable the bare-metal functional tests:

To disable a failing test (in either a container or on bare metal):

  • Tests can be skipped by providing the --skip flag to ftests.py. Currently test number 28 is being skipped in ftests-nocontainer.sh
    To skip a single test, then use the format --skip 9
    To skip multiple tests, then use the format --skip 9,10,13

./configure && make should succeed on all distributions. If there is a failure with these steps, please email the libcgroup development team via our mailing list - libcg-devel@lists.sourceforge.net - or open a Github issue here - https://github.com/libcgroup/libcgroup/issues

make check may fail on some distributions and some machines. You are welcome to send any failures to our mailing list or open a Github issue, but note that some failures may be expected. The functional tests are currently focused on our continuous integration machines on Github Actions. Tests that enumerate all cgroup settings for a given controller may produce different results on other machines - especially if a different distro or kernel is being used. See below for details on potential failures:

  • Functional tests fail - lxd: command not found - Some of the functional tests use LXD containers to safely encapsulate cgroup changes that would otherwise be destructive on a live system, but not all distributions currently support LXD. If so, feel free to bypass running the LXD functional tests. See the comment above on how to disable the containerized tests

  • Various functional tests fail - As outlined above, this is likely due to differences in system capabilities. For example, if your system has real time cgroups enabled, then you will likely see functional test number 9 fail. I would recommend adding it to the skip list in ftests.sh and/or ftests-nocontainer.sh. See the comment above on how to skip individual tests

  • Unit tests fail - version GLIBCXX_3.4.20 not found - version CXXABI_1.3.9 not found - version GLIBCXX_3.4.21 not found To facilitate long-term stability and testability, we have bundled a compiled version of googletest with this release of libcgroup. On older distributions, this could cause errors during make check` due to the googletest *.so files being dependent upon a newer version of glibc than is available. This can be easily remedied by re-compiling googletest and replacing the provided *.so files. The rough steps are outlined below:

  $ git clone https://github.com/google/googletest.git googletest
  $ cd googletest
  $ git checkout release-1.8.0
  $ cd googletest
  $ cmake -DBUILD_SHARED_LIBS=ON .
  $ make
  $ cp *.so {path_where_you_extracted_libcgroup}/googletest/googletest
  $ cd {path_where_you_extracted_libcgroup}/tests/gunit
  $ make clean
  $ make check