test(e2e): reproduce constrained dev shm failure#522
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
24813bf to
ebc6e41
Compare
7121ef2 to
e1d4fa0
Compare
ebc6e41 to
eac0891
Compare
e1d4fa0 to
1e4ee5f
Compare
82c057f to
aaaf01b
Compare
1e4ee5f to
67ee808
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: aaaf01b298
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
67ee808 to
669ab52
Compare
aaaf01b to
a64e9b8
Compare
70822fb to
8716c77
Compare
a64e9b8 to
ae72983
Compare
8716c77 to
4e0e749
Compare
ae72983 to
ac080f6
Compare
4119fee to
d949311
Compare
d949311 to
23ada60
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 23ada60b5c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| comment = """ | ||
| Mounting a one-page `/dev/shm` reproduces the SIGBUS seen before fspy moved its shared-memory backing to memfd. | ||
| """ | ||
| platform = "linux-gnu" |
There was a problem hiding this comment.
Guard the namespace-dependent fixture
This schedules the new fixture in the default Linux-glibc e2e run, but its step invokes vtt small_dev_shm, which immediately creates user/mount namespaces and mounts a tmpfs over /dev/shm. On glibc Linux hosts or containers where unprivileged user namespaces or mounts are disabled by sysctl/seccomp, the helper exits with an error instead of the expected SIGBUS 135, so cargo test -p vite_task_bin --test e2e_snapshots fails before exercising the regression. Please mark this case ignored or add a capability probe/skip.
Useful? React with 👍 / 👎.
Co-authored-by: GPT-5.6 <gpt-5.6@openai.com> Co-authored-by: GPT-5 Codex <codex@openai.com>
23ada60 to
7c023af
Compare
| #[expect(clippy::allow_attributes, reason = "using allow because unused_imports may or may not fire depending on macro expansion")] | ||
| #[allow(unused_imports, reason = "glob import brings types into scope for macro-generated code")] | ||
| use super::*; | ||
| $(#[$original_attribute])* |
There was a problem hiding this comment.
Don't add this. Hardcode the allow attribute here.
| #[cfg(not(target_os = "linux"))] | ||
| mod small_dev_shm { | ||
| pub fn run(_args: &[String]) -> anyhow::Result<()> { | ||
| anyhow::bail!("vtt small_dev_shm is only supported on Linux") | ||
| } | ||
| } |
There was a problem hiding this comment.
Don't mock run. Directly bail inside the match arm
| // SAFETY: forwards statx through the existing syscall interposer, which | ||
| // records the access, handles null availability probes, and calls the | ||
| // original libc syscall function. The final zero supplies its sixth |
There was a problem hiding this comment.
Don't do this. Forward to statx instead of syscall

Motivation
Capture issue #353 as a deterministic Linux-glibc E2E failure before changing the shared-memory implementation.
Background
The current Linux backend creates a sparse 4 GiB POSIX shared-memory object under
/dev/shm. On constrained container or Kubernetes tmpfs mounts, touching pages beyond available capacity raisesSIGBUS. The reproduction needs to exceed one native page with very few accesses and prove that the eventual fix changes the backing store rather than weakening the test.Changes
vtt small_dev_shm, which enters private user and mount namespaces and mounts a one-page tmpfs at/dev/shm.vtt stat_long_filename <count>without changing the existingstat-fileutility.std::fs::metadatawith a 1 MiB pathname so fspy serializes a frame larger than any supported base page before the kernel returnsENAMETOOLONG.statxsymbol so Rust metadata calls travel through fspy's normal preload path.SIGBUSwhile keeping the snapshot test itself green.