Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

libct/cg: IsCgroup2HybridMode: don't panic #3433

Merged
merged 1 commit into from Mar 28, 2022

Conversation

kolyshkin
Copy link
Contributor

In case statfs("/sys/fs/cgroup/unified") fails with any error other
than ENOENT, current code panics. As IsCgroup2HybridMode is called from
libcontainer/cgroups/fs's init function, this means that any user of
libcontainer may panic during initialization, which is ugly.

Avoid panicking; instead, do not enable hybrid hierarchy support and
report the error (under debug level, not to confuse anyone).

Basically, replace the panic with "turn off hybrid mode support"
(which makes total sense since we were unable to statfs its root).

This is an alternative to #3432. The bug is originally reported by @liggitt
in kubernetes/kubernetes#109029 (review)

@kolyshkin kolyshkin added area/cgroupv1 backport/todo/1.1 A PR in main branch which needs to be backported to release-1.1 labels Mar 27, 2022
@kolyshkin
Copy link
Contributor Author

@AkihiroSuda @mrunalp @thaJeztah PTAL

@mrunalp
Copy link
Contributor

mrunalp commented Mar 27, 2022

As a library we should avoid logging but I think this case is probably fine.

mrunalp
mrunalp previously approved these changes Mar 27, 2022
In case statfs("/sys/fs/cgroup/unified") fails with any error other
than ENOENT, current code panics. As IsCgroup2HybridMode is called from
libcontainer/cgroups/fs's init function, this means that any user of
libcontainer may panic during initialization, which is ugly.

Avoid panicking; instead, do not enable hybrid hierarchy support and
report the error (under debug level, not to confuse anyone).

Basically, replace the panic with "turn off hybrid mode support"
(which makes total sense since we were unable to statfs its root).

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
@kolyshkin
Copy link
Contributor Author

As a library we should avoid logging but I think this case is probably fine.

Good point! There are a bunch of other places like this in libcontainer unfortunately. Which has to be solved globally (perhaps by having a user-specifiable logger which defaults to "no logging at all".

@AkihiroSuda AkihiroSuda merged commit 8d48ce2 into opencontainers:main Mar 28, 2022
@kolyshkin kolyshkin added backport/done/1.1 A PR in main branch which was backported to release-1.1 and removed backport/todo/1.1 A PR in main branch which needs to be backported to release-1.1 labels Mar 28, 2022
@kolyshkin
Copy link
Contributor Author

1.1 backport: #3435

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/cgroupv1 backport/done/1.1 A PR in main branch which was backported to release-1.1
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants