stablyai/orca · warning · MissingReproductionError
Terminal input and scroll stayed responsive without the fix
Error message
Terminal input and scroll stayed responsive without the fix on this host.
What it means
Thrown by the Linux Wayland GPU sandbox verification script when running in --mode=expect-repro and the terminal input and scrollback exercises completed without freezing. In expect-repro mode the test deliberately exercises the unfixed code path to confirm the bug reproduces on this host; if the terminal stays responsive, the bug is absent and the test cannot validate that a subsequent fix actually addresses it. This is a MissingReproductionError, a custom Error subclass defined locally in the script (verify-linux-wayland-gpu-sandbox.mjs:31).
Source
Thrown at config/scripts/verify-linux-wayland-gpu-sandbox.mjs:298
logPhase('window.first')
page = await runWithTimeout('first renderer window', () => app.firstWindow(), timeoutMs)
logPhase('window.load')
await runWithTimeout(
'renderer domcontentloaded',
() => page.waitForLoadState('domcontentloaded'),
rendererSetupTimeoutMs
)
logPhase('window.loaded')
const ptyId = await setupTerminal(page, repoPath, logPhase)
terminalExerciseStarted = true
logPhase('exercise.start')
const scroll = await assertScrollbackBufferWorks(page, ptyId, runId, logPhase)
const typedMarkers = await assertKeyboardInputWorks(page, ptyId, repoPath, runId, logPhase)
const gpuCrashLines = stderrLines.filter((line) => gpuCrashPattern.test(line))
if (mode === 'expect-repro') {
throw new MissingReproductionError(
'Terminal input and scroll stayed responsive without the fix on this host.'
)
}
if (gpuCrashLines.length > 0) {
throw new Error(`GPU crash evidence appeared in stderr:\n${gpuCrashLines.join('\n')}`)
}
console.log(
JSON.stringify(
{
mode,
phase: validationState.phase,
waylandDisplay: process.env.WAYLAND_DISPLAY ?? null,
xdgSessionType: process.env.XDG_SESSION_TYPE ?? null,
switches: commandLineSwitches,
scroll,
typedMarkers,
gpuCrashLinesView on GitHub (pinned to 1136503c6a)
Solutions
- Confirm the host is actually running a Wayland session: echo $XDG_SESSION_TYPE should print wayland and $WAYLAND_DISPLAY should be set.
- Verify the GPU driver and Mesa version match a known-reproducible configuration; if the host's stack is newer, switch to a runner or container with the vulnerable combination.
- If the bug genuinely cannot reproduce on any available host, run with --mode=verify-fix instead — that mode asserts the terminal stays responsive and does not require reproduction.
- Check whether the fix commit is already on the branch under test (git log --oneline for the GPU sandbox fix); if so, the expect-repro mode is the wrong mode for this branch.
Example fix
// before — running on a host where the bug doesn't reproduce // node config/scripts/verify-linux-wayland-gpu-sandbox.mjs --mode=expect-repro // // after — use verify-fix mode which expects the terminal to stay responsive // node config/scripts/verify-linux-wayland-gpu-sandbox.mjs --mode=verify-fix
Defensive patterns
Strategy: validation
Validate before calling
// Before running the script, validate the host can reproduce the bug.
// Check Wayland session is active.
function canReproduceOnThisHost() {
const session = process.env.XDG_SESSION_TYPE
const display = process.env.WAYLAND_DISPLAY
if (session !== 'wayland' || !display) {
return false // bug only reproduces under Wayland
}
return true
}
// Choose mode based on host capability
const mode = canReproduceOnThisHost() ? 'expect-repro' : 'verify-fix'
console.log(`Using --mode=${mode}`) Try / catch
// MissingReproductionError is a known, expected outcome in expect-repro mode.
// The script itself handles it in its own catch block (hasBaseReproductionEvidence).
// External callers should treat it as a non-fatal signal, not a crash.
try {
await runVerification({ mode: 'expect-repro' })
} catch (error) {
if (error.message.includes('stayed responsive without the fix')) {
console.warn('Bug did not reproduce on this host — use --mode=verify-fix instead')
process.exit(0) // non-fatal for orchestration
}
throw error
} Prevention
- Document which GPU/driver/compositor combinations are known to reproduce the bug so CI runners can be selected accordingly.
- Default to --mode=verify-fix in CI and only use --mode=expect-repro on dedicated reproduction hosts.
- Log XDG_SESSION_TYPE and WAYLAND_DISPLAY at the start of the script to quickly diagnose missing reproduction.
When it happens
Trigger: Running the script with --mode=expect-repro on a host where the GPU sandbox crash does not occur (e.g. a host with a different GPU driver, a newer Chromium version that already handles the bug, or running under X11 instead of Wayland). The throw fires at line 298 only after assertScrollbackBufferWorks and assertKeyboardInputWorks both succeed without the terminal wedging.
Common situations: Running the verification on a CI runner whose GPU/driver combination does not exhibit the Wayland GPU sandbox crash; running on a host where XDG_SESSION_TYPE is not wayland; the GPU crash only manifests under specific Mesa/Chromium version combinations and this host has a different one; the fix was already cherry-picked into the branch being tested.
Related errors
- GPU crash evidence appeared in stderr: ${gpuCrashLines.join(
- Timed out polling ${label} after ${pollTimeoutMs}ms.
- Timed out waiting for ${label}; last value: ${JSON.stringify
- No active terminal pane to focus.
- No active terminal pane for scrollback API scroll.
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/4747a001bad75530.
Report an issue: GitHub.