Skip to content

Fission 0.6.1 desktop apps crash under headless Linux VM GUI testing when the test-control API sends SimulateResize. #86

Description

@zcourts

The crash happens in a Debian arm64 VM running under UTM on an Apple Silicon Mac. The app starts successfully, /health works, /cmd works for basic commands, and CaptureScreenshot works at the initial 800x600 size. The crash is specifically
triggered after {"cmd":"SimulateResize", ...} causes the surface to be reconfigured.

Environment

  • Host: macOS on Apple Silicon, M1

  • VM: UTM Debian arm64

  • Fission: 0.6.1

  • Renderer path observed:

    • Vulkan llvmpipe by default
    • GL llvmpipe with WGPU_BACKEND=gl
  • Test control:

    • FISSION_TEST_CONTROL_PORT=
    • POST /cmd
  • Compositors tested:

    • Xvfb
    • weston --backend=headless-backend.so
  • App starts and renders before resize.

Working Commands

This works under Xvfb:

POST /cmd {"cmd":"Pump"}
POST /cmd {"cmd":"Wait","ms":220}
POST /cmd {"cmd":"GetText"}
POST /cmd {"cmd":"CaptureScreenshot"}

CaptureScreenshot produces a valid 800x600 PNG, and GetText returns visible text.

Failing Command

This crashes the app:

{"cmd":"SimulateResize","width":1536,"height":1024}

A later Pump, Wait, or CaptureScreenshot receives an empty reply because the app has already exited.

Crash With Xvfb + Vulkan llvmpipe

fission-shell-winit: renderer: native-vello requested=auto backend=Vulkan adapter=llvmpipe (LLVM 19.1.7, 128 bits) size=800x600 scale=1.00

thread 'main' panicked at wgpu-26.0.1/src/backend/wgpu_core.rs:3526:18:
wgpu error: Validation Error

Caused by:
In Surface::configure
Requested alpha mode PostMultiplied is not in the list of supported alpha modes: [Opaque, Inherit]

Crash With Weston Headless + Vulkan llvmpipe

Requested alpha mode PostMultiplied is not in the list of supported alpha modes: [Opaque, PreMultiplied]

Crash With Xvfb + GL llvmpipe

Run with:

WGPU_BACKEND=gl

Crash:

fission-shell-winit: renderer: native-vello requested=auto backend=Gl adapter=llvmpipe (LLVM 19.1.7, 128 bits) size=800x600 scale=1.00

Requested alpha mode PostMultiplied is not in the list of supported alpha modes: [Opaque]

Expected Behavior

Fission should not request an unsupported surface alpha mode during resize. It should inspect surface.get_capabilities(...) and choose a supported mode, probably in this order:

  1. PostMultiplied
  2. PreMultiplied
  3. Opaque
  4. another supported fallback

Or otherwise gracefully fail with an actionable renderer diagnostic rather than panicking in wgpu.

Impact

This blocks Fission GUI live tests in headless Linux VM environments where the surface does not advertise PostMultiplied. Basic startup, text extraction, and screenshots work, but resize testing crashes the app.

Notes

The same Fission GUI tests reportedly work natively on macOS. This appears VM/compositor/surface-capability specific, not an application-level issue.

1

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions