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#3210saku3 merged 75 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>
| @@ -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 |
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>
|
it’s strange that both integration verifications failed I couldn’t reproduce this on my local machine |
|
This is tough... I checked it in my repository’s GitHub Actions as well.
It’s possible the exec tests aren’t cleaning up properly. |
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>
You were absolutely spot on with your observation about batch_size=1. I've pushed a fix for this. The root cause was that preserve_fds_test was modifying the global file descriptor table in the parent contest test runner process by manually clearing the FD_CLOEXEC flag and running dup2(fd, 3). Because contest runs tests concurrently by default, this led to two distinct issues:
To fix this, the file descriptor modifications have been confined entirely to the child process specifically spawned for preserve_fds_test by using CommandExt::pre_exec. Please feel free to review the changes when you have time. |
|
@tommady |
| fn load_container_state(&self, container_dir: PathBuf) -> Result<Container, LibcontainerError> { | ||
| let container = Container::load(container_dir)?; | ||
| if !container.can_exec() { | ||
| if !container.can_exec() |
There was a problem hiding this comment.
I missed that.
With the current condition, statuses that should not allow exec, such as Stopped, would end up allowing exec.
I think it would be better to handle it like this.
(I wrote it this way for readability first, though it may be possible to simplify it further.)
if container.status() == ContainerStatus::Paused {
if !self.ignore_paused {
return Err(...);
}
} else if !container.can_exec() {
return Err(...);
}
There was a problem hiding this comment.
Great catch on that logic bug!
I think using match is the way to go here. It’s a lot more readable than the nested if statements and makes it much easier to see exactly which statuses allow execution and which don't.
Thanks for pointing that out!
Signed-off-by: tommady <tommady@users.noreply.github.com>
Description
Type of Change
Testing
Related Issues
Fixes #3207 #3209
Additional Context