fix(3207, 3209) Difference between the exec command in runc and youki#3210
fix(3207, 3209) Difference between the exec command in runc and youki#3210tommady wants to merge 63 commits intoyouki-dev:mainfrom
Conversation
Bumps the patch group with 4 updates: [libc](https://github.com/rust-lang/libc), [clap](https://github.com/clap-rs/clap), [serde_json](https://github.com/serde-rs/json) and [clap_complete](https://github.com/clap-rs/clap). Updates `libc` from 0.2.174 to 0.2.175 - [Release notes](https://github.com/rust-lang/libc/releases) - [Changelog](https://github.com/rust-lang/libc/blob/0.2.175/CHANGELOG.md) - [Commits](rust-lang/libc@0.2.174...0.2.175) Updates `clap` from 4.5.4 to 4.5.13 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](clap-rs/clap@clap_complete-v4.5.4...clap_complete-v4.5.13) Updates `serde_json` from 1.0.141 to 1.0.142 - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](serde-rs/json@v1.0.141...v1.0.142) Updates `clap_complete` from 4.5.1 to 4.5.13 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](clap-rs/clap@clap_complete-v4.5.1...clap_complete-v4.5.13) --- updated-dependencies: - dependency-name: libc dependency-version: 0.2.175 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: clap dependency-version: 4.5.13 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: serde_json dependency-version: 1.0.142 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: clap_complete dependency-version: 4.5.13 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps the patch group with 3 updates: [oci-spec](https://github.com/youki-dev/oci-spec-rs), [thiserror](https://github.com/dtolnay/thiserror) and [anyhow](https://github.com/dtolnay/anyhow). Updates `oci-spec` from 0.8.1 to 0.8.2 - [Changelog](https://github.com/youki-dev/oci-spec-rs/blob/main/release.md) - [Commits](youki-dev/oci-spec-rs@v0.8.1...v0.8.2) Updates `thiserror` from 2.0.12 to 2.0.14 - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](dtolnay/thiserror@2.0.12...2.0.14) Updates `anyhow` from 1.0.98 to 1.0.99 - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](dtolnay/anyhow@1.0.98...1.0.99) --- updated-dependencies: - dependency-name: oci-spec dependency-version: 0.8.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: thiserror dependency-version: 2.0.14 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: anyhow dependency-version: 1.0.99 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
…Option of vector of string Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
…ux yet Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
a173dd0 to
9ea9fa1
Compare
Signed-off-by: tommady <tommady@users.noreply.github.com>
Bumps the patch group with 1 update: [thiserror](https://github.com/dtolnay/thiserror). Updates `thiserror` from 2.0.14 to 2.0.15 - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](dtolnay/thiserror@2.0.14...2.0.15) --- updated-dependencies: - dependency-name: thiserror dependency-version: 2.0.15 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps the patch group with 1 update: [serde_json](https://github.com/serde-rs/json). Updates `serde_json` from 1.0.142 to 1.0.143 - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](serde-rs/json@v1.0.142...v1.0.143) --- updated-dependencies: - dependency-name: serde_json dependency-version: 1.0.143 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Bumps the patch group with 1 update: [thiserror](https://github.com/dtolnay/thiserror). Updates `thiserror` from 2.0.15 to 2.0.16 - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](dtolnay/thiserror@2.0.15...2.0.16) --- updated-dependencies: - dependency-name: thiserror dependency-version: 2.0.16 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Bumps the patch group with 1 update: [regex](https://github.com/rust-lang/regex). Updates `regex` from 1.11.1 to 1.11.2 - [Release notes](https://github.com/rust-lang/regex/releases) - [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md) - [Commits](rust-lang/regex@1.11.1...1.11.2) --- updated-dependencies: - dependency-name: regex dependency-version: 1.11.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps the patch group with 1 update: [tracing-subscriber](https://github.com/tokio-rs/tracing). Updates `tracing-subscriber` from 0.3.19 to 0.3.20 - [Release notes](https://github.com/tokio-rs/tracing/releases) - [Commits](tokio-rs/tracing@tracing-subscriber-0.3.19...tracing-subscriber-0.3.20) --- updated-dependencies: - dependency-name: tracing-subscriber dependency-version: 0.3.20 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
|
The changes in #3347 will help address and enhance the testcase requested by saku3. Just a memo for myself — turning this PR back to draft. |
|
@tommady For this PR, if we can’t move it forward until issue #3347 is resolved, I think we could proceed by leaving TODO comments (or create sub-issue) for the parts related to #3347 for now. What approach would be easiest for you to proceed? |
Thanks for the suggestion! From my point of view, this PR is ready for review. Because of that, some of the cgroup tests can’t be implemented right now. So yes, please review it when you have time 🙂 |
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
|
Thank! I’ll review it this week. |
saku3
left a comment
There was a problem hiding this comment.
I've left a few comments.
Everything else looks good to me.
Could you please take a look when you have a chance?
Thanks for the solid work on this!
| fn get_no_new_privileges(&self, spec: &Spec) -> Option<bool> { | ||
| self.no_new_privs | ||
| .filter(|&is_set| is_set) | ||
| .or_else(|| spec.process().clone().and_then(|p| p.no_new_privileges())) |
There was a problem hiding this comment.
It looks like we can avoid using clone().
| .or_else(|| spec.process().clone().and_then(|p| p.no_new_privileges())) | |
| .or_else(|| spec.process().as_ref().and_then(|p| p.no_new_privileges())) |
|
|
||
| let id2 = id.clone(); | ||
| let dir2 = dir.to_path_buf(); | ||
| std::thread::spawn(move || { |
There was a problem hiding this comment.
This means we want to resume the paused container at the end, right?
This might be prone to flakiness.
Would you consider using scopeguard::defer!?
There was a problem hiding this comment.
scopeguard was removed earlier (see commit below), and in this case it would also resume the container too late since it only runs at scope exit. I’ll use an mpsc channel instead to explicitly synchronize the resume during exec --ignore-paused. Thanks for the suggestion.
There was a problem hiding this comment.
Sorry, I understand now.
In this case, I think the previous implementation (adding a short sleep) is acceptable.
It aligns with runc’s behavior, so I don’t expect it to cause issues in practice.
Also, since the spawn order doesn’t guarantee the actual execution order, resume may run first, meaning the test might not actually verify that exec works while the container is paused.
| sub_cgroup_path | ||
| ))); | ||
| } | ||
| final_cgroups_path = potential_path; |
There was a problem hiding this comment.
Shouldn’t the final value we want to set be normalized?
| final_cgroups_path = potential_path; | |
| final_cgroups_path = normalized; |
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
Signed-off-by: tommady <tommady@users.noreply.github.com>
| @@ -9,8 +9,6 @@ use nix::sys::wait::{WaitStatus, waitpid}; | |||
| use crate::workload::executor::default_executor; | |||
|
|
|||
| pub fn exec(args: Exec, root_path: PathBuf) -> Result<i32> { | |||
There was a problem hiding this comment.
with_apparmor seems to be missing.
|
|
||
| let id2 = id.clone(); | ||
| let dir2 = dir.to_path_buf(); | ||
| std::thread::spawn(move || { |
There was a problem hiding this comment.
Sorry, I understand now.
In this case, I think the previous implementation (adding a short sleep) is acceptable.
It aligns with runc’s behavior, so I don’t expect it to cause issues in practice.
Also, since the spawn order doesn’t guarantee the actual execution order, resume may run first, meaning the test might not actually verify that exec works while the container is paused.
|
I think everything looks mostly fine aside from the parts I commented on. PTAL @utam0k |
Description
Type of Change
Testing
Related Issues
Fixes #3207 #3209
Additional Context