Skip to content

Commit 24b4620

Browse files
committed
agents: the smoke display facts the worst run taught
Three loaded facts from the Oct 05 evening: egl-headless is DRM-bound even under software GL; a connected connector is not enough (the guest needs virgl, virtio-gpu-gl, or niri has an allocator it cannot use and the greeter dies clean at one second); and the runner lacks libEGL while xvfb-run is not exec — one Xvfb per run keeps the kill contract.
1 parent d3c3820 commit 24b4620

1 file changed

Lines changed: 26 additions & 6 deletions

File tree

‎AGENTS.md‎

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,37 @@ road every release ships.
111111
probe that needs a live process asks the runner's timing unless
112112
the process is guaranteed alive; and a fix's report that claims
113113
more than its diff gets caught by the gate that runs the diff.
114-
- `egl-headless` wants a host DRM node a runner lacks. But the
115-
"displayless" `QEMU_DISPLAY: none` is worse in a subtler way: with
114+
- `egl-headless` wants a host DRM node a runner lacks — even with
115+
`LIBGL_ALWAYS_SOFTWARE=1`: qemu's GL helpers open a render node
116+
before mesa's software path gets a word in ("egl: no drm render
117+
node available", measured Oct 05 on a runner and on a local
118+
mount namespace with /dev/dri bind-hidden). And the "displayless"
119+
`QEMU_DISPLAY: none` is worse in a subtler way: with
116120
no display frontend the guest's virtio-gpu reports every connector
117121
DISCONNECTED, so niri comes up with zero outputs and any
118122
layer-shell client (the greeter) cannot map its window — gpui
119123
quits when its last window closes, rc=0, and greetd reads "greeter
120124
exited without creating a session". The greeter was never buggy;
121-
the VM had no screen. The combo is `virtio-vga` plus
122-
`vnc=127.0.0.1:59`: a VNC server nobody connects to gives the
123-
connector a scanout, needs no host GPU and no DRM node (measured,
124-
Oct 04).
125+
the VM had no screen.
126+
- A connected connector is not enough, Oct 05: a 3D-less virtio-gpu
127+
(dmesg `features: -virgl`) gives niri's DRM backend a device it
128+
cannot allocate through — software EGL renderers are skipped for
129+
the renderer, GBM finds no allocator — so niri still comes up with
130+
zero outputs and the greeter dies the same clean rc=0 a second
131+
after start. The guest needs virgl: `virtio-gpu-gl`. Its guest
132+
driver allocates through llvmpipe alone, no host GPU. The
133+
end-to-end repro took one evening locally: same disk, same binary,
134+
greeter died in 1s on virtio-vga and ran indefinitely on
135+
virtio-gpu-gl.
136+
- The runner image has no libEGL: any GL display makes qemu abort at
137+
its first line ("Couldn't open libEGL.so.1", core dumped) and the
138+
stage reads "qemu died". The kvm action installs libegl1 and
139+
libgl1 for the same reason it installs ovmf. And `xvfb-run` is
140+
the wrong way to head a GL display: it runs the command as a
141+
child, not exec, so the script's `$!` names the wrapper shell and
142+
every `kill $qemu` orphans the VM. One Xvfb per run, `DISPLAY`
143+
exported, qemu the direct child — that is the contract the smoke's
144+
traps and port reuse already assume.
125145
- The greeter chain's stderr (niri's protocol errors, kuma-greeter's
126146
log lines) goes to VT1 and dies with the greetd session: the
127147
journal never sees why a login screen failed, and "greeter exited

0 commit comments

Comments
 (0)