Source: mutter Version: 48.2-1 Severity: important Tags: ftbfs unreproducible help Control: found -1 48.4-1 User: [email protected] 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

