You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(doctor): report when nvcc cannot reach its own back-end
Verifying the release inside a sandbox found the CUDA example failing where
it succeeds on the host. The difference is one line: nvcc runs cicc, cudafe++,
ptxas and fatbinary as bare names on a PATH it prepends itself from an
`nvcc.profile` beside its binary, Debian-family packaging makes that profile a
symlink into /etc, and a sandbox that replaces /etc removes it. nvcc then
keeps the ambient PATH and reports `sh: 1: cicc: not found`, which names
neither nvcc nor the profile. Nothing about the toolkit is missing, so every
obvious check passes.
The plan is asked for rather than assumed. `nvcc --dryrun` prints the stages
and the PATH nvcc will use without compiling anything; parse_dryrun reads that
plan, and the doctor resolves each bare name against the path nvcc states,
reporting the first that does not resolve. A dryrun that yields no plan --
there is no nvcc, or the output is not one -- produces no finding, on the same
principle as the host-compiler bound: a probe that reaches no answer must not
invent one.
Measured on both sides, because a check that is always silent and a check that
is always loud look alike from one run. With a working nvcc the warning does
not appear; with nvcc copied to a directory holding no profile it appears and
names `cicc` -- the same stage the real failure names, because Debian ships
cudafe++, ptxas and fatbinary in /usr/bin and cicc only in the toolkit's own
directory.
No e2e accompanies this. It would need nvcc, which CI does not have, and a
`# requires: nvcc` script skips and exits 0 on every shard. The coverage is
five unit tests over two real dryrun transcripts differing in exactly that
PATH line, plus the two-sided control recorded in the design's section 15.7.
0 commit comments