Crash when changing scale factor on Wayland
Affected version
Version: 3.37.90 (commit 7d6b2bdb) Wayland-only
Bug summary
Mutter (and thus GNOME Shell) crashes when changing the scale factor on a Wayland session.
Steps to reproduce
- Open GNOME Settings' Display panel
- Change the scale factor
What happened
Mutter crashed.
What did you expect to happen
Not crash, and change the scale factor.
Relevant logs, screenshots, screencasts etc.
Right before crashing, the following assertion failures appear on journalctl:
meta_renderer_native_release_onscreen: assertion 'onscreen_native->gbm.next_fb == NULL' failed
_cogl_onscreen_free: assertion 'onscreen->winsys == NULL' failed
This is probably a double-unref somewhere in the code. This is the backtrace:
#0 0x00007f5edccf645b in notify_view_crtc_presented (view=0x55fa08fc71f0, kms_crtc=0x7f5ecc0066f0, time_ns=8911074983000) at ../src/backends/native/meta-renderer-native.c:1059
1059 CoglOnscreenEGL *onscreen_egl = onscreen->winsys;
[Current thread is 1 (Thread 0x7f5ed90f4bc0 (LWP 7776))]
(gdb) bt
#0 0x00007f5edccf645b in notify_view_crtc_presented (view=0x55fa08fc71f0, kms_crtc=0x7f5ecc0066f0, time_ns=8911074983000) at ../src/backends/native/meta-renderer-native.c:1059
#1 0x00007f5edccf659e in page_flip_feedback_flipped (kms_crtc=0x7f5ecc0066f0, sequence=534161, tv_sec=8911, tv_usec=74983, user_data=0x55fa08fc71f0) at ../src/backends/native/meta-renderer-native.c:1113
#2 0x00007f5edcd0147c in meta_kms_page_flip_data_flipped (kms=0x55fa08f49860, user_data=0x55fa0dd13330) at ../src/backends/native/meta-kms-page-flip.c:99
#3 0x00007f5edcd035da in flush_callbacks (kms=0x55fa08f49860) at ../src/backends/native/meta-kms.c:279
#4 0x00007f5edcd0363e in callback_idle (user_data=0x55fa08f49860) at ../src/backends/native/meta-kms.c:295
#5 0x00007f5edd90f340 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#6 0x00007f5edd95d1d9 in () at /usr/lib/libglib-2.0.so.0
#7 0x00007f5edd90dc03 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#8 0x00007f5edcc3d2cf in meta_run_main_loop () at ../src/core/main.c:658
#9 0x00007f5edcc3d2e0 in meta_run () at ../src/core/main.c:673
#10 0x000055fa07e20337 in main (argc=1, argv=0x7ffea52cffe8) at ../src/main.c:550
These are the variables of the function:
(gdb) i locals
stage_view = 0x55fa08fc71f0
framebuffer = 0x0
onscreen = 0x0
onscreen_egl = 0x100
onscreen_native = 0x55fa0db886dc
renderer_native = 0x1d
frame_info = 0x7ffea52cfcc0
crtc = 0x2132436a7
renderer_gpu_data = 0x81ac5757c58