Repository navigation
LinuxContainer.stop() fails on empty threaded child cgroups in 0.53.0 - #991
Open
StefanPrintezis wants to merge 2 commits into
Open
StefanPrintezis wants to merge 2 commits into
StefanPrintezis wants to merge 2 commits into
Conversation
child kills that fail with EOPNOTSUPP on threaded cgroups. Keep the root kill, recursive directory removal, and existing error handling.
This branch has not been deployed
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.
Summary
The VM stops, but LinuxContainer.stop() throws
EOPNOTSUPPand leaves the container object errored. The severity or effect on the consuming application depends on how it handles that failure.Cause
Normal cleanup calls delete(force: true). The initial kill at the container’s domain cgroup covers the whole subtree, but recursive cleanup kills each child again.
Linux supports threaded cgroups, but rejects writing directly to their cgroup.kill files with EOPNOTSUPP. Cleanup therefore fails on a valid cgroup layout.
Fix
Remove the redundant per-child kills. Keep the initial subtree kill, directory-removal error handling and existing removal retries.
Reproduction
Run
make reproduceor just read the small repro i made here:https://github.com/StefanPrintezis/apple-containerization-threaded-cgroup-repro