Skip to content

test(e2e): reproduce constrained dev shm failure#522

Open
wan9chi wants to merge 1 commit into
fspy-shm-lifecyclefrom
constrained-dev-shm-e2e
Open

test(e2e): reproduce constrained dev shm failure#522
wan9chi wants to merge 1 commit into
fspy-shm-lifecyclefrom
constrained-dev-shm-e2e

Conversation

@wan9chi

@wan9chi wan9chi commented Jul 9, 2026

Copy link
Copy Markdown
Member

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 raises SIGBUS. 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

  • Adds vtt small_dev_shm, which enters private user and mount namespaces and mounts a one-page tmpfs at /dev/shm.
  • Adds vtt stat_long_filename <count> without changing the existing stat-file utility.
  • Calls std::fs::metadata with a 1 MiB pathname so fspy serializes a frame larger than any supported base page before the kernel returns ENAMETOOLONG.
  • Intercepts glibc's statx symbol so Rust metadata calls travel through fspy's normal preload path.
  • Adds a Linux-glibc-only cached-task fixture and explanatory generated snapshot.
  • Records the pre-fix behavior as exit code 135 from SIGBUS while keeping the snapshot test itself green.

wan9chi commented Jul 9, 2026

Copy link
Copy Markdown
Member Author

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread crates/vite_task_bin/src/vtt/stat_file.rs Outdated
Comment thread crates/vite_task_bin/src/vtt/stat_file.rs
@wan9chi wan9chi force-pushed the fspy-shm-lifecycle branch from 67ee808 to 669ab52 Compare July 9, 2026 07:57
@wan9chi wan9chi force-pushed the constrained-dev-shm-e2e branch from aaaf01b to a64e9b8 Compare July 9, 2026 07:57
@wan9chi wan9chi force-pushed the fspy-shm-lifecycle branch 2 times, most recently from 70822fb to 8716c77 Compare July 9, 2026 14:16
@wan9chi wan9chi force-pushed the constrained-dev-shm-e2e branch from a64e9b8 to ae72983 Compare July 9, 2026 14:16
@wan9chi wan9chi marked this pull request as draft July 10, 2026 01:16
@wan9chi wan9chi force-pushed the fspy-shm-lifecycle branch from 8716c77 to 4e0e749 Compare July 10, 2026 06:02
@wan9chi wan9chi force-pushed the constrained-dev-shm-e2e branch from ae72983 to ac080f6 Compare July 10, 2026 06:02
Comment thread crates/vite_task_bin/src/vtt/small_dev_shm.rs
Comment thread crates/vite_task_bin/src/vtt/small_dev_shm.rs Outdated
Comment thread crates/vite_task_bin/src/vtt/small_dev_shm.rs Outdated
Comment thread crates/vite_task_bin/src/vtt/stat_long_filename.rs
Comment thread crates/vite_task_bin/Cargo.toml
@wan9chi wan9chi force-pushed the constrained-dev-shm-e2e branch 3 times, most recently from 4119fee to d949311 Compare July 10, 2026 07:14
@wan9chi wan9chi force-pushed the constrained-dev-shm-e2e branch from d949311 to 23ada60 Compare July 10, 2026 07:27
@wan9chi wan9chi marked this pull request as ready for review July 10, 2026 07:37

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

@wan9chi wan9chi force-pushed the constrained-dev-shm-e2e branch from 23ada60 to 7c023af Compare July 10, 2026 08:12
Comment thread crates/fspy_preload_unix/src/macros/linux.rs Outdated
Comment thread crates/vite_task_bin/src/vtt/main.rs Outdated
Comment thread crates/fspy_preload_unix/src/interceptions/stat.rs Outdated
Co-authored-by: GPT-5.6 <gpt-5.6@openai.com>
Co-authored-by: GPT-5 Codex <codex@openai.com>
@wan9chi wan9chi force-pushed the constrained-dev-shm-e2e branch from 7c023af to 3d71f50 Compare July 10, 2026 09:41
@wan9chi wan9chi marked this pull request as draft July 10, 2026 09:46
@wan9chi wan9chi marked this pull request as ready for review July 10, 2026 10:14

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3d71f5099a

ℹ️ 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 on lines +63 to +68
let Some(original) = statx::try_original() else {
// Rust's standard library interprets ENOSYS from its statx availability
// probe as unsupported and falls back to stat64.
// SAFETY: __errno_location returns the calling thread's errno storage on Linux.
unsafe { *libc::__errno_location() = libc::ENOSYS };
return -1;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Fall back to the raw syscall when libc lacks statx

On Linux systems whose libc does not export statx (for example older glibc targets), this LD_PRELOAD library still exports statx, so code that weak-links or dlsyms statx will call this shim instead of taking its own SYS_statx fallback. Returning ENOSYS here changes those traced tasks from a working kernel statx call into a failure; please invoke the raw SYS_statx path (and record the access) when RTLD_NEXT has no statx rather than exposing a stub.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant