Repository navigation
fix: fall back to an untracked spawn when fspy cannot start - #752
Open
lifeiscontent wants to merge 5 commits into
Open
lifeiscontent wants to merge 5 commits into
lifeiscontent wants to merge 5 commits into
Conversation
lifeiscontent
force-pushed
the
fix/vt-untracked-spawn-fallback
branch
from
September 23, 2026 23:50
b61e289 to
1ef7ac7
Compare
lifeiscontent
force-pushed
the
fix/vt-untracked-spawn-fallback
branch
2 times, most recently
from
September 23, 2026 23:56
bae3882 to
3842cbf
Compare
Initializing fspy panicked if the preload library couldn't be written to the temp dir. Return the error from fspy::Command::spawn instead, and have vt rerun the command without tracking. The task still runs, isn't cached, and the summary says file access tracking failed to start.
lifeiscontent
force-pushed
the
fix/vt-untracked-spawn-fallback
branch
from
September 24, 2026 10:38
3842cbf to
398f824
Compare
…n-fallback # Conflicts: # CHANGELOG.md # crates/vt/src/session/reporter/summary.rs
…n-fallback # Conflicts: # CHANGELOG.md
…n-fallback # Conflicts: # CHANGELOG.md
Contributor
Author
|
Merged current main and resolved the summary conflict while keeping the new read/write caching behavior from #913. Added a regression test for the tracking-unavailable summary reason. The vt and fspy tests pass on macOS, as do all 175 enabled end-to-end snapshots. Clippy is clean for both crates. This remains independent of #701 and #753. Could someone review it and approve the workflow runs? |
wan9chi
added a commit
that referenced
this pull request
Nov 10, 2026
…led (#701) ## Motivation Fixes #700. Cached tasks run under fspy, which preloads a library into every spawned process. For statically linked binaries the preload installs a seccomp filter before exec. In sandboxes that deny the `seccomp` syscall (rootless bubblewrap under a restrictive profile, some CI environments) that install fails with EPERM, and the exec returned the error instead of running the program. Every spawn in a cached task failed before the child started. ## Changes - When the seccomp filter can't be installed, exec and `posix_spawn(p)` mark the trace incomplete and run the call untracked. All other exec errors are returned as before, so errors like ENOENT, EACCES and ENOEXEC still reach the caller unchanged and don't affect caching. - Each exec variant falls back to its own libc original with its original arguments. `execvp` and `execlp` still search `PATH`, `execveat` keeps its dirfd and flags, and `fexecve` keeps its fd (so it doesn't need `/proc`). `execl`, `execlp` and `execle` can't forward their varargs, so they fall back to `execv`, `execvp` and `execve` with the collected argv, which POSIX defines as equivalent. - Add `Sender::report_loss`, which sets the channel's CLOSED bit so the run is treated as untracked and not cached from a partial trace. - The not-cached message now reads "automatic file tracking couldn't record everything this task did", which covers both a full tracking channel and this case. Affected tasks still run but aren't cached. Setting `input` and `output` explicitly (without `auto`) brings caching back in those environments. Split out from the original version of this PR: - #753: the preload no longer aborts its host process when the payload is missing or the channel can't be opened. Based on this branch. - #752: vt falls back to an untracked spawn when fspy can't start. Independent. --------- Co-authored-by: wan9chi <me@wan9chi.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.
Motivation
Part of #700, split out of #701. Initializing fspy panicked if its preload library couldn't be written to the temp dir, and any failed tracked spawn failed the task.
Changes
SPY_IMPLnow holds anio::Result.fspy::Command::spawnreturns an init failure asSpawnError::Injectioninstead of panicking.ChildOutcome::fspy_unavailable. The run isn't cached, and the summary shows "Not cached: file access tracking failed to start".summary.rsare grouped into aSuccessDetailsstruct, which keepsspawn_outcome_from_executionunder clippy's argument limit.This doesn't depend on #701 or #753.