Skip to content

Fuzz oracles for companion-process death and hostile host config #852

Description

@ejc3

Two defect classes surfaced while driving restores on a shared dev box (#850, #851). Each got a deterministic regression test, but the classes are broader than the instances, and the chaos fuzz can hold the line for the class.

Class 1: a companion process dies and the failure blames a downstream symptom

pasta died on a port conflict after writing its PID file and creating its TAP, so three consecutive runs failed with Cannot find device "pasta0" while pasta's own Address already in use reached no log (#851). The instance is fixed; the class is any companion (pasta, holder, UFFD serve, egress proxy) dying between a readiness signal and the next consumer of what it provides.

Proposed fuzz oracle: extend the failpoint harness with a companion-kill fault (SIGKILL one named companion at a failpoint chosen by the schedule). Invariant checked on every failed run: if a companion died, the propagated error text contains that companion's name and its last stderr line. The existing ModelBarrier-style event log can carry the "companion X died at step Y" fact; the oracle greps the run's error against it. This turns "the error blamed the wrong thing" from a human observation into a red test for every companion at every step.

Class 2: a helper binary resolves shared host config differently than podman

skopeo read /etc/containers/storage.conf literally while rootless podman remapped it, so an image podman had just built was unexportable (#850). The class is any helper (skopeo, crun, fuse-overlayfs) interpreting host-wide config differently than the tool fcvm pairs it with.

Proposed CI arm rather than fuzz: a hostile-host-config matrix leg that runs the unprivileged suite with CONTAINERS_STORAGE_CONF pointing at a conf pinning a root-only runroot, mirroring the config-managed hosts where this bit. Cheap (env var plus one file), and it would have made #850 a red CI leg instead of a field failure.

Both oracles verify diagnosability, not just correctness: a failure must carry the evidence needed to attribute it (the standing rule in AGENTS.md's CI-capture section).

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions