Bug#1108935: mutter: intermittent test failure in surface-scale-tests: assertion failed (cursor_scale == scale (+/- FLT_EPSILON)): (0 == 2)
Simon McVittie
smcv at debian.org
Tue Jul 8 10:41:03 BST 2025
Source: mutter
Version: 48.2-1
Severity: important
Tags: ftbfs unreproducible help
Control: found -1 48.4-1
User: debian-ci at lists.debian.org
Usertags: flaky
Although the majority of mutter's build-time test and autopkgtest
failures appear to have been resolved during the 48.x series, looking
through build and autopkgtest logs there is one failure mode that has
not been accounted for.
In one autopkgtest on armel,
https://ci.debian.net/packages/m/mutter/testing/armel/61424275/ we see
this failure:
> 488s # Running test: mutter-16/surface-scale-tests.test
> 492s # FAIL: mutter-16/surface-scale-tests.test (Child process exited with code 250)
> 492s not ok - mutter-16/surface-scale-tests.test
...
> 670s # SUMMARY: total=34; passed=33; skipped=0; failed=1; user=237.9s; system=51.7s; maxrss=2491188
> 670s # FAIL: mutter-16/surface-scale-tests.test (Child process exited with code 250)
> 670s autopkgtest [15:17:33]: test installed-tests: -----------------------]
> 670s installed-tests FAIL non-zero exit status 2
For further details of that failure we have to look in the
$AUTOPKGTEST_ARTIFACTS (artifacts.tar.gz on ci.debian.net) and read
artifacts/mutter-16_surface-scale-tests.test.txt, quoted in full here:
> Setup HOME as /tmp/mutter-testroot-q4d27a1a/home
> Setup TMPDIR as /tmp/mutter-testroot-q4d27a1a/tmpdir
> Setup XDG_CACHE_HOME as /tmp/mutter-testroot-q4d27a1a/xdg_cache_home
> Setup XDG_CONFIG_HOME as /tmp/mutter-testroot-q4d27a1a/xdg_config_home
> Setup XDG_DATA_HOME as /tmp/mutter-testroot-q4d27a1a/xdg_data_home
> Setup XDG_RUNTIME_DIR as /tmp/mutter-testroot-q4d27a1a/xdg_runtime_dir
> Starting D-Bus daemons (session & system)...
> Binding /tmp/mutter-testroot-q4d27a1a/xdg_runtime_dir/pipewire-0 for socket activation
> Binding /tmp/mutter-testroot-q4d27a1a/xdg_runtime_dir/pipewire-0-manager for socket activation
> Launching required services...
> Starting mocked services...
> Running test case...
> Process ['/usr/libexec/installed-tests/mutter-16/mutter-surface-scale-tests'] started with pid 6405
> ERROR:dbus.proxies:Introspect error on :1.1:/org/freedesktop/login1/session/dummy: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownObject: Unknown object '/org/freedesktop/login1/session/dummy'.
> TAP version 14
> # random seed: R02S7d29f311ad333ae5918550f468fbdcc7
> # GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation memory (GMemorySettingsBackend) for ‘gsettings-backend’
> # GLib-DEBUG: setenv()/putenv() are not thread-safe and should not be used after threads are created
> # libmutter-MESSAGE: Running Mutter Test (using mutter 48.2) as a Wayland display server
> # libmutter-MESSAGE: Created surfaceless renderer without GPU
> # GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ‘gio-vfs’
> # libmutter-DEBUG: WL: Unable to initialize wl_eglstream_controller.
> # libmutter-MESSAGE: Using Wayland display name 'mutter-test-display'
> # libmutter-INFO: Acquired name org.gnome.Mutter.InputMapping
> # libmutter-DEBUG: Acquired name org.freedesktop.a11y.Manager
> # libmutter-INFO: Acquired name org.gnome.Mutter.ServiceChannel
> 1..1
> # Start of wayland tests
> # Start of surface tests
> # mutter-surface-scale-tests-test-DEBUG: Testing with scale 2.0, then launching client
> ** (process:6446): DEBUG: 15:14:34.958: Waiting for scales to check
> ** (process:6446): DEBUG: 15:14:35.261: Checking scale 2.000000
> **
> ERROR:../src/tests/wayland-test-clients/surface-scale-client.c:41:check_scales: assertion failed (cursor_scale == scale (+/- FLT_EPSILON)): (0 == 2)
> Bail out! ERROR:../src/tests/wayland-test-clients/surface-scale-client.c:41:check_scales: assertion failed (cursor_scale == scale (+/- FLT_EPSILON)): (0 == 2)
> **
> mutter-surface-scale-tests-test:ERROR:../src/tests/meta-wayland-test-utils.c:59:wayland_test_client_finished: 'g_subprocess_get_successful (wayland_test_client->subprocess)' should be TRUE
> not ok /wayland/surface/surface-scales - mutter-surface-scale-tests-test:ERROR:../src/tests/meta-wayland-test-utils.c:59:wayland_test_client_finished: 'g_subprocess_get_successful (wayland_test_client->subprocess)' should be TRUE
> Bail out!
> Closing PipeWire socket...
> Terminating services...
An equivalent failure was seen for 48.4-1 in experimental on
reproducible-builds.org, although only for the second of the two builds
that r-b does (in the first build, all tests passed):
> 146/158 mutter:core+mutter/backends/native / surface-scale-tests RUNNING
> >>> MALLOC_PERTURB_=83 G_TEST_SRCDIR=/build/reproducible-path/mutter-48.4/src/tests UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 XDG_CONFIG_HOME=/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/.config ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MUTTER_REF_TEST_RESULT_DIR=/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/meson-logs/tests/ref-tests GSETTINGS_SCHEMA_DIR=/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/src/tests:/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/data MUTTER_GDCTL_TEST_RESULT_DIR=/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/meson-logs/tests/gdctl G_TEST_BUILDDIR=/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/src/tests LD_LIBRARY_PATH=/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/cogl/cogl:/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/clutter/clutter:/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/src:/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/src/compositor/plugins:/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/mtk/mtk:/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/src/tests MUTTER_TEST_PLUGIN_PATH=/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/src/compositor/plugins/libdefault.so MESON_TEST_ITERATION=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 /build/reproducible-path/mutter-48.4/src/tests/meta-dbus-runner.py -- /build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/src/tests/mutter-surface-scale-tests
> ――――――――――――――――――――――――――――――――――――― ✀ ―――――――――――――――――――――――――――――――――――――
> Setup HOME as /tmp/mutter-testroot-d5xglgov/home
> Setup TMPDIR as /tmp/mutter-testroot-d5xglgov/tmpdir
> Setup XDG_CACHE_HOME as /tmp/mutter-testroot-d5xglgov/xdg_cache_home
> Setup XDG_CONFIG_HOME as /tmp/mutter-testroot-d5xglgov/xdg_config_home
> Setup XDG_DATA_HOME as /tmp/mutter-testroot-d5xglgov/xdg_data_home
> Setup XDG_RUNTIME_DIR as /tmp/mutter-testroot-d5xglgov/xdg_runtime_dir
> Starting D-Bus daemons (session & system)...
> Binding /tmp/mutter-testroot-d5xglgov/xdg_runtime_dir/pipewire-0 for socket activation
> Binding /tmp/mutter-testroot-d5xglgov/xdg_runtime_dir/pipewire-0-manager for socket activation
> Launching required services...
> Starting mocked services...
> Running test case...
> Process ['/build/reproducible-path/mutter-48.4/obj-x86_64-linux-gnu/src/tests/mutter-surface-scale-tests'] started with pid 27239
> TAP version 14
> # random seed: R02S695bc3faecc9b013f93bc09beadcbecc
> # GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation memory (GMemorySettingsBackend) for ‘gsettings-backend’
> # GLib-DEBUG: setenv()/putenv() are not thread-safe and should not be used after threads are created
> # libmutter-MESSAGE: Running Mutter Test (using mutter 48.4) as a Wayland display server
> # libmutter-MESSAGE: Created surfaceless renderer without GPU
> # GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ‘gio-vfs’
> # libmutter-DEBUG: WL: loaded libnvidia-egl-wayland.so.1:wl_eglstream_controller.
> # libmutter-MESSAGE: Using Wayland display name 'mutter-test-display'
> # libmutter-INFO: Acquired name org.gnome.Mutter.InputMapping
> # libmutter-DEBUG: Acquired name org.freedesktop.a11y.Manager
> # libmutter-INFO: Acquired name org.gnome.Mutter.ServiceChannel
> 1..1
> # Start of wayland tests
> # Start of surface tests
> # mutter-surface-scale-tests-test-DEBUG: Testing with scale 2.0, then launching client
> ** (process:27351): DEBUG: 21:05:25.390: Waiting for scales to check
> ** (process:27351): DEBUG: 21:05:26.061: Checking scale 2.000000
> **
> ERROR:../src/tests/wayland-test-clients/surface-scale-client.c:41:check_scales: assertion failed (cursor_scale == scale (+/- FLT_EPSILON)): (0 == 2)
> Bail out! ERROR:../src/tests/wayland-test-clients/surface-scale-client.c:41:check_scales: assertion failed (cursor_scale == scale (+/- FLT_EPSILON)): (0 == 2)
> **
> mutter-surface-scale-tests-test:ERROR:../src/tests/meta-wayland-test-utils.c:59:wayland_test_client_finished: 'g_subprocess_get_successful (wayland_test_client->subprocess)' should be TRUE
> not ok /wayland/surface/surface-scales - mutter-surface-scale-tests-test:ERROR:../src/tests/meta-wayland-test-utils.c:59:wayland_test_client_finished: 'g_subprocess_get_successful (wayland_test_client->subprocess)' should be TRUE
> Bail out!
> Closing PipeWire socket...
> Terminating services...
> ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
> 146/158 mutter:core+mutter/backends/native / surface-scale-tests FAIL 7.52s (exit status 250 or signal 122 SIGinvalid)
This has not been seen on official buildds, and has not been seen on
ci.debian.net in the dozens of autopkgtest runs that were done since
May, so my suspicion is that it's a race condition or other
timing-related issue that rarely happens. Perhaps there is a race
between the mutter compositor setting the cursor scale to its correct
nonzero value, and the client retrieving it?
Assistance in reproducing or debugging this test failure would be
appreciated.
smcv
More information about the pkg-gnome-maintainers
mailing list