Clutter /grab/input-only test intermittently failing: assertion failed (expected[i].type == elem->type): (6 == 3)
While running build-time tests for mutter 45.2 in a Debian unstable (rolling release) chroot inside a Debian 12 virtual machine, I'm regularly seeing this test failure in the last stage of mutter:clutter+clutter/conform / grab
, /grab/input-only
:
================================== 115/180 ===================================
test: mutter:clutter+clutter/conform / grab
start time: 11:21:00
duration: 1.67s
result: (exit status 250 or signal 122 SIGinvalid)
command: G_ENABLE_DIAGNOSTIC=0 G_TEST_SRCDIR=/<<PKGBUILDDIR>>/src/tests/clutter/conform MALLOC_PERTURB_=91 G_TEST_BUILDDIR=/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/tests/clutter/conform ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 CLUTTER_ENABLE_DIAGNOSTIC=0 LD_LIBRARY_PATH=/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/cogl/cogl:/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src:/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/tests:/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/cogl/cogl-pango:/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/mtk/mtk:/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/clutter/clutter /<<PKGBUILDDIR>>/src/tests/meta-dbus-runner.py -- /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/tests/clutter/conform/grab
----------------------------------- output -----------------------------------
Starting D-Bus daemons (session & system)...
Launching required services...
Starting mocked services...
Running test case...
TAP version 13
# random seed: R02S7ad51845e15007f0a8e8cac3fc2705d8
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation memory (GMemorySettingsBackend) for ‘gsettings-backend’
# libmutter-MESSAGE: Running Mutter Test (using mutter 45.2) as a Wayland display server
# GLib-GIO-DEBUG: Using cross-namespace EXTERNAL authentication (this will deadlock if server is GDBus < 2.73.3)
# libmutter-MESSAGE: Made thread 'KMS thread' realtime scheduled
# libmutter-MESSAGE: Created surfaceless renderer without GPU
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ‘gio-vfs’
# libmutter-MESSAGE: Disabling DMA buffer screen sharing (not hardware accelerated)
# libmutter-MESSAGE: Disabling DMA buffer screen sharing (implicit modifiers not supported)
# libmutter-DEBUG: WL: loaded libnvidia-egl-wayland.so.1:wl_eglstream_controller.
# libmutter-MESSAGE: Using Wayland display name 'mutter-test-display'
Window manager warning: Failed to set environment variable WAYLAND_DISPLAY for gnome-session: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Name "org.gnome.SessionManager" does not exist
# libmutter-MESSAGE: Added virtual monitor Meta-0
1..11
# Start of grab tests
# Clutter-Conform-DEBUG: Event 'leave' on actor 'a'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'a'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'stage'
ok 1 /grab/grab-under-pointer
# libmutter-INFO: Acquired name org.gnome.Mutter.InputMapping
# libmutter-INFO: Acquired name org.gnome.Mutter.ServiceChannel
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'stage'
ok 2 /grab/grab-under-pointers-parent
# Clutter-Conform-DEBUG: Event 'leave' on actor 'b'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'a'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'b'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'a'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'stage'
ok 3 /grab/grab-outside-pointer
ok 4 /grab/grab-stage
# Clutter-Conform-DEBUG: Event 'leave' on actor 'a'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'b'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'a'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'b'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'a'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'stage'
ok 5 /grab/grab-stack-1
# Clutter-Conform-DEBUG: Event 'leave' on actor 'b'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'a'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'b'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'b'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'a'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'b'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'a'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'stage'
ok 6 /grab/grab-stack-2
# Clutter-Conform-DEBUG: Event 'leave' on actor 'a'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'b'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'a'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'b'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'a'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'stage'
ok 7 /grab/grab-unordered-ungrab-1
# Clutter-Conform-DEBUG: Event 'leave' on actor 'b'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'a'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'b'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'a'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'stage'
ok 8 /grab/grab-unordered-ungrab-2
# Clutter-Conform-DEBUG: Event 'leave' on actor 'a'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'a'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'stage'
ok 9 /grab/key-focus-in-grab
# Clutter-Conform-DEBUG: Event 'leave' on actor 'b'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'a'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'b'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'a'
# Clutter-Conform-DEBUG: Event 'enter' on actor 'stage'
ok 10 /grab/key-focus-outside-grab
# Clutter-Conform-DEBUG: Event 'leave' on actor 'b'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'a'
# Clutter-Conform-DEBUG: Event 'leave' on actor 'stage'
# Clutter-Conform-DEBUG: Input only grab event 'motion'
# Clutter-Conform-DEBUG: Input only grab event 'button-press'
# Clutter-Conform-DEBUG: Input only grab event 'button-release'
**
Clutter-Conform:ERROR:../src/tests/clutter/conform/grab.c:31:event_log_compare: assertion failed (expected[i].type == elem->type): (6 == 3)
not ok /grab/input-only - Clutter-Conform:ERROR:../src/tests/clutter/conform/grab.c:31:event_log_compare: assertion failed (expected[i].type == elem->type): (6 == 3)
Bail out!
(The log has been filtered to make comparisons easier: <<PKGBUILDDIR>>
represents the top-level directory of the unpacked source package, and the build directory is its obj-x86_64-linux-gnu
subdirectory.)
The same failure mode has been seen occasionally on Debian's official autobuilders for various CPU architectures, for example in https://buildd.debian.org/status/fetch.php?pkg=mutter&arch=arm64&ver=45.0-1&stamp=1695058361&raw=0 and https://buildd.debian.org/status/fetch.php?pkg=mutter&arch=armhf&ver=45.1-2&stamp=1701274478&raw=0.
For whatever reason, this is now consistently failing for me (in a qemu VM with 8G RAM), although I suspect it's the sort of intermittent, timing-related issue that will stop being reproducible as soon as I report it.