Summary
The web renderer dies with SIGSEGV inside libcef.so every time the daemon stops it on a compositor without a seat. I hit it on weston --backend=headless: switching wallpapers crashes it, and so does the 15 s first-frame timeout, since both end in Shutdown -> host.Shutdown() -> CefShutdown() (web_entry.cpp:823) while the browser is still open. A plain SIGTERM doesn't crash.
Reproduction
weston --backend=headless --renderer=noop --shell=kiosk --socket=wayland-x &
WAYLAND_DISPLAY=wayland-x waywallen --no-ui --no-display &
# display client: waywallen_display_demo (needs waywallen/waywallen#265 to pair with weweb at all)
# apply a web wallpaper, then apply another one (or just wait for the first-frame timeout)
15 of 15 stops on that weston crashed, always at the same pc. Same weston with --fake-seat: 0 of 5. kwin_wayland --virtual: 0 of 3.
Renderer
Web wallpaper
Run mode
Waywallen plugin
Workshop item
n/a (trivial CSS animation page)
Install source
Release plugin archive
Open Wallpaper Engine version
0.2.9 (054ee06); the web shutdown path is the same on main 5d2d931
Linux distribution
CachyOS, kernel 7.2.4, waywallen 0.3.9 (f99ec40)
GPU and driver
AMD Radeon 780M, Mesa 26.2.2, CEF 149.0.4+g2f1bfd8
Logs
INFO weweb-renderer: ERROR:content/browser/browser_main_loop.cc:274] Gdk: gdk_seat_get_keyboard: assertion 'GDK_IS_SEAT (seat)' failed
INFO waywallen::wallframe::renderer_manager: renderer 6da5afa8-...: Ready (drm_render=226:128)
WARN waywallen::wallframe::renderer_manager::writer: renderer 6da5afa8-...: writer exit: syscall: EPIPE: Broken pipe
INFO waywallen::wallframe::renderer_manager: renderer 6da5afa8-...: shutdown complete
ERROR waywallen::api::websocket::wire: request 101 failed: renderer did not produce a frame: timed out after 15s
waywallen-weweb[1565254]: segfault at 18 ip 00007fc994dca654 sp 00007ffda4596380 error 4 in libcef.so[39c9654,7fc993de9000+be0d000]
waywallen-weweb[1568604]: segfault at 18 ip 00007fba14fca654 sp 00007fffcec7db90 error 4 in libcef.so[39c9654,7fba13fe9000+be0d000]
Additional context
Faulting instruction is mov 0x18(%rax),%r15 with rax = 0. No symbols are published for this CEF build, so only frame 0 is trustworthy. Every seatless run prints the GDK_IS_SEAT assertion at startup, the runs with a seat never do. The daemon also logs "shutdown complete" for a renderer that just segfaulted.
Nobody runs a real session without a seat, so this is low priority. Would you rather guard it on your side (close the browser and wait for OnBeforeClose before CefShutdown), or should it go to CEF?
Summary
The web renderer dies with SIGSEGV inside libcef.so every time the daemon stops it on a compositor without a seat. I hit it on
weston --backend=headless: switching wallpapers crashes it, and so does the 15 s first-frame timeout, since both end in Shutdown ->host.Shutdown()->CefShutdown()(web_entry.cpp:823) while the browser is still open. A plain SIGTERM doesn't crash.Reproduction
15 of 15 stops on that weston crashed, always at the same pc. Same weston with
--fake-seat: 0 of 5. kwin_wayland --virtual: 0 of 3.Renderer
Web wallpaper
Run mode
Waywallen plugin
Workshop item
n/a (trivial CSS animation page)
Install source
Release plugin archive
Open Wallpaper Engine version
0.2.9 (054ee06); the web shutdown path is the same on main 5d2d931
Linux distribution
CachyOS, kernel 7.2.4, waywallen 0.3.9 (f99ec40)
GPU and driver
AMD Radeon 780M, Mesa 26.2.2, CEF 149.0.4+g2f1bfd8
Logs
Additional context
Faulting instruction is
mov 0x18(%rax),%r15with rax = 0. No symbols are published for this CEF build, so only frame 0 is trustworthy. Every seatless run prints the GDK_IS_SEAT assertion at startup, the runs with a seat never do. The daemon also logs "shutdown complete" for a renderer that just segfaulted.Nobody runs a real session without a seat, so this is low priority. Would you rather guard it on your side (close the browser and wait for OnBeforeClose before CefShutdown), or should it go to CEF?