Repository navigation
dist-compile-e2e: worker and launcher once disagreed on g++'s toolchain fingerprint #1727
Copy link
Copy link
Open
Labels
area/distributedDistributed/, apps/fastcache-compile-node/ - dispatch, workers, schedulerDistributed/, apps/fastcache-compile-node/ - dispatch, workers, schedulerarea/testingos/linuxSpecific to Linux (glibc, epoll, systemd, deb/rpm)Specific to Linux (glibc, epoll, systemd, deb/rpm)type/bugBehaves incorrectly against its stated contractBehaves incorrectly against its stated contract
Description
dist-compile-e2e failed once in a local gate run on the gate-gcc-release leg, at the toolchain-fingerprint agreement check, before any compile case ran. It did not reproduce afterwards. Filed so a recurrence has somewhere to land, and because a fixture or a node that occasionally disagrees about a compiler's identity is worth understanding, not retrying past.
What happened (measured)
- Local gate, Linux (Fedora 44, GCC 16.2.1), branch
fix/clang-macro-prefix-map-on-preprocessed-input(fix(pace-cc): apply -fmacro-prefix-map on clang workers compiling preprocessed input #1726) on master 16fb5b7, 2026-10-22 between 20:57 and 21:14 CEST.gate-clang-debug: 6929/6929 passed.gate-gcc-release: 6927/6928; the one failure wasdist-compile-e2e, after 1.56 s:The first value is the WORKER's: the firstdist-compile E2E FAILED: worker and launcher disagree on the toolchain fingerprint: '89774c206d5cea5704051af91f89689d' vs 'a069fc8108e5fb3adf1fd3be2f672f0c'serving <compiler> as <fp>line in its log (scripts/dist-compile-e2e.sh, around line 903). The second is the LAUNCHER's:pace-cc --print-toolchain-fingerprint "$compiler"(around line 765). The compiler is the tree'sCMAKE_CXX_COMPILER,/usr/bin/g++. - An immediate rerun on the same binaries (unchanged mtimes) failed the same way.
- Every later run passed: 6 of 6 direct runs (2 on an idle host, 4 under 2×nproc busy loops), plus a full gate rerun at 22:18 that ended
LOCAL GATE PASSED. - Afterwards, every pace-cc on the machine (both gate trees, a clang-debug dev tree,
/usr/bin) and a manually started gatepace-nodegivea069fc81…for/usr/bin/g++. No compiler that was tried (c++,gcc,cc,clang++,clang,x86_64-redhat-linux-g++) produces89774c20…. - The branch under test changes no fingerprint input: no banner,
DriverGrammarNameor schema change. Its onlyDriverSpecchange is a new carrier column. - The only package transaction near the window was a reinstall of the
paceRPM at 21:26 (dnf5.log), after the gate ended. Whether the failing rerun happened before or after it was not recorded. - The failed run's work directory (
/tmp/tmp.Sf11jVypOy, the worker log included) was cleaned up with the fixture, so the worker's full log is gone. The surviving ctest log shows the worker reachingcompile node ready,scheduling for the fleetand the lease-signature line, each in the first poll, before the check failed.
Not established (inferred or open)
- Where
89774c20…came from. Nothing on the machine reproduces it. - Possible lead, not checked: the worker re-logs
serving {} as {}whenever its toolchain set is re-resolved (NodeToolchains.cpp, the refresh path around line 744), and the fixture takes the FIRST such line. If a worker can log one fingerprint and then a different one, a first-line read compares a superseded identity. That would make this a fixture defect, not a fingerprint defect. The other reading, two derivations of the same compiler genuinely disagreeing (environment, a stamp, the include-root walk), would be a fingerprint defect. The two need telling apart before anything is changed. - Whether the 21:26 reinstall of
/usr/bin/pace-*mattered. A gate run uses its own build-tree binaries, so a link is not expected, but it was not ruled out by timing.
Asked of whoever picks this up
- Make the failure self-describing first: on this mismatch the fixture should print every
serving … as …line from the worker log and the worker log's head before it fails, so a recurrence carries its own evidence. - Decide whether a worker may legitimately log more than one fingerprint for one
--toolchain. If yes, the fixture should compare the latest (or the set). If no, a second line is the bug. - Only then judge whether this is a fingerprint-derivation defect.
Metadata
Metadata
Assignees
Labels
area/distributedDistributed/, apps/fastcache-compile-node/ - dispatch, workers, schedulerDistributed/, apps/fastcache-compile-node/ - dispatch, workers, schedulerarea/testingos/linuxSpecific to Linux (glibc, epoll, systemd, deb/rpm)Specific to Linux (glibc, epoll, systemd, deb/rpm)type/bugBehaves incorrectly against its stated contractBehaves incorrectly against its stated contract
Activity