Skip to content

ci: always run the Windows legs on windows-latest, and wait for Xvfb before X programs - #27

Open
zignd wants to merge 3 commits into
mainfrom
ci/windows-always-hosted
Open

zignd wants to merge 3 commits into
mainfrom
ci/windows-always-hosted

Conversation

@zignd

@zignd zignd commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Two changes, both needed for the checks to be meaningful.

Windows legs run for real. Under TRACE_CI_RUNNERS=self-hosted they were a placeholder that only reported they did not run, so the WindowsDX catalog smoke, the FNA video smoke and the Windows render parity never executed. No Windows machine is part of the local fleet, and Forma is public, where standard GitHub-hosted runners (Windows included) are not billed, so they now always run on windows-latest. The flag still selects the self-hosted labels for Linux and macOS, and the job names are unchanged so the required checks keep resolving.

Xvfb readiness. The first green run showed the Linux leg failing with XCB failed to connect to the X server due to error:1 from the first X program of the job. xvfb-run -a hands the display number to the payload as soon as Xvfb creates its socket, and Xvfb 2:21.1.12-1ubuntu1.9 still needs a moment before it listens. In a fresh container on the server, 4 of 5 plain xvfb-run runs failed and 0 of 5 failed behind scripts/xvfb-run.sh, which waits for xdpyinfo before starting the payload. Every call site now uses it. This is a package update picked up at job time, so it would have hit main on the next Linux job regardless of this branch.

The two Windows legs were a placeholder under TRACE_CI_RUNNERS=self-hosted, so nothing exercised
the WindowsDX catalog smoke, the FNA video smoke or the Windows render parity while the fleet
handled the rest. No Windows machine is part of the local fleet, and this repository is public,
where standard GitHub-hosted runners (Windows included) do not consume billed minutes, so the legs
can run for real there.

The matrix now always carries windows-latest; the flag still selects the self-hosted labels for the
Linux and macOS legs, and windows-latest maps to itself either way. Job names are unchanged, so the
required checks still resolve.
@zignd
zignd force-pushed the ci/windows-always-hosted branch from 4f79430 to ff037fe Compare October 24, 2026 21:40
The Linux legs started failing with

    XCB failed to connect to the X server due to error:1
    ERROR at ./vulkaninfo/./vulkaninfo.h:737: AppCreateXcbSurface failed to establish connection

on the very first X program of the job. xvfb-run -a hands the display number to the payload as soon
as Xvfb creates its socket, and Xvfb 2:21.1.12-1ubuntu1.9 still needs a moment before it listens, so
an immediate client gets ECONNREFUSED. A fresh container on the server reproduces it: 4 of 5 plain
xvfb-run runs failed, 0 of 5 with a readiness wait.

scripts/xvfb-run.sh wraps xvfb-run with that wait (xdpyinfo, from x11-utils) and every call site now
uses it. This is an environment change (the xvfb package is installed at job time), not a code one:
it would have hit main on the next Linux job regardless of this branch.
@zignd zignd changed the title ci: always run the Windows legs on windows-latest ci: always run the Windows legs on windows-latest, and wait for Xvfb before X programs Oct 24, 2026
The Xvfb readiness wrapper documents the probe it uses, and cspell flags the name.

This branch has not been deployed

No deployments
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