DisplayLink display is black on plug-in and mutter crash after moving cursor on DisplayLink display.
Affected version
Provide at least the following information:
- Ubuntu 22.10
- Mutter 43.0
- Wayland only
Bug summary
This is recent regression with reproduction rate 100%. Binary chop showed that this started to happen after !2578 (merged)
I think that this is because MetaRendererNativeGpuData* render_device happens to be null when DisplayLink display is attached after log-in(if display is attached prior to start of mutter all is fine). This make me think that hot plugging/unplugging functionality is not working.
Steps to reproduce
- Login
- Attach DisplayLink device with display connected
- Notice that display is visible in Display Preferences but display stays blank.
- Move cursor over DisplayLink display.
- Mutter crashes.
What happened
Mutter crashes, user is asked to log-in again.
What did you expect to happen
Mutter does not crash.
Relevant logs, screenshots, screencasts etc.
Crash in line: https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/backends/native/meta-renderer-native.c#L226
Crash backtrace:
Thread 1 "gnome-shell" received signal SIGSEGV, Segmentation fault.
0x00007f9209c35329 in meta_gbm_device_from_gpu (gpu_kms=0x55eb13bc9e00) at ../src/backends/native/meta-renderer-native.c:204
204 render_device = renderer_gpu_data->render_device;
(gdb) bt
#0 0x00007f9209c35329 in meta_gbm_device_from_gpu (gpu_kms=0x55eb13bc9e00) at ../src/backends/native/meta-renderer-native.c:204
#1 0x00007f9209c06674 in create_cursor_drm_buffer (gpu_kms=0x55eb13bc9e00, device_file=0x55eb15eaa860, pixels=0x7f91b4bb9700 "", width=24, height=24, stride=96, cursor_width=64, cursor_height=64, format=875713089, error=0x7ffda9443108) at ../src/backends/native/meta-cursor-renderer-native.c:1329
#2 0x00007f9209c068b9 in load_cursor_sprite_gbm_buffer_for_gpu (native=0x55eb1617f580, gpu_kms=0x55eb13bc9e00, cursor_sprite=0x55eb1918fb00, pixels=0x7f91b4bb9700 "", width=24, height=24, rowstride=96, gbm_format=875713089) at ../src/backends/native/meta-cursor-renderer-native.c:1399
#3 0x00007f9209c06f98 in load_scaled_and_transformed_cursor_sprite (native=0x55eb1617f580, gpu_kms=0x55eb13bc9e00, cursor_sprite=0x55eb1918fb00, relative_scale=1, relative_transform=META_MONITOR_TRANSFORM_NORMAL, data=0x7f91b4bb9700 "", width=24, height=24, rowstride=96, gbm_format=875713089)
at ../src/backends/native/meta-cursor-renderer-native.c:1574
#4 0x00007f9209c07293 in realize_cursor_sprite_from_wl_buffer_for_gpu (renderer=0x55eb1617f580, gpu_kms=0x55eb13bc9e00, sprite_wayland=0x55eb1918fb00) at ../src/backends/native/meta-cursor-renderer-native.c:1670
#5 0x00007f9209c07788 in realize_cursor_sprite_for_gpu (renderer=0x55eb1617f580, gpu_kms=0x55eb13bc9e00, cursor_sprite=0x55eb1918fb00) at ../src/backends/native/meta-cursor-renderer-native.c:1836
#6 0x00007f9209c077cf in realize_cursor_sprite (renderer=0x55eb1617f580, cursor_sprite=0x55eb1918fb00, gpus=0x55eb16345a20 = {...}) at ../src/backends/native/meta-cursor-renderer-native.c:1854
#7 0x00007f9209c05dd4 in meta_cursor_renderer_native_update_cursor (renderer=0x55eb1617f580, cursor_sprite=0x55eb1918fb00) at ../src/backends/native/meta-cursor-renderer-native.c:1087
#8 0x00007f9209aac8fa in meta_cursor_renderer_update_cursor (renderer=0x55eb1617f580, cursor_sprite=0x55eb1918fb00) at ../src/backends/meta-cursor-renderer.c:413
#9 0x00007f9209aaca07 in meta_cursor_renderer_force_update (renderer=0x55eb1617f580) at ../src/backends/meta-cursor-renderer.c:448
#10 0x00007f9209bc4dc6 in update_cursor_sprite_texture (cursor_surface=0x55eb1924d880) at ../src/wayland/meta-wayland-cursor-surface.c:79
#11 0x00007f9209bc512a in meta_wayland_cursor_surface_apply_state (surface_role=0x55eb1924d880, pending=0x55eb1918d410) at ../src/wayland/meta-wayland-cursor-surface.c:179
#12 0x00007f9209be3774 in meta_wayland_surface_role_apply_state (surface_role=0x55eb1924d880, pending=0x55eb1918d410) at ../src/wayland/meta-wayland-surface.c:1938
#13 0x00007f9209be14b6 in meta_wayland_surface_apply_state (surface=0x55eb16305e60, state=0x55eb1918d410) at ../src/wayland/meta-wayland-surface.c:882
#14 0x00007f9209be19c7 in meta_wayland_surface_commit (surface=0x55eb16305e60) at ../src/wayland/meta-wayland-surface.c:1038
#15 0x00007f9209be1e9f in wl_surface_commit (client=0x55eb191d7150, resource=0x55eb191f1eb0) at ../src/wayland/meta-wayland-surface.c:1191
#16 0x00007f9209d1ae2e in () at /lib/x86_64-linux-gnu/libffi.so.8
#17 0x00007f9209d17493 in () at /lib/x86_64-linux-gnu/libffi.so.8
#18 0x00007f920aea42a0 in () at /lib/x86_64-linux-gnu/libwayland-server.so.0
#19 0x00007f920aea8694 in () at /lib/x86_64-linux-gnu/libwayland-server.so.0
#20 0x00007f920aea70fa in wl_event_loop_dispatch () at /lib/x86_64-linux-gnu/libwayland-server.so.0
#21 0x00007f9209bc2720 in wayland_event_source_dispatch (base=0x55eb14299890, callback=0x0, data=0x0) at ../src/wayland/meta-wayland.c:110
#22 0x00007f920a9454f9 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x00007f920a99a228 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#24 0x00007f920a944a7f in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#25 0x00007f9209b1a0f4 in meta_context_run_main_loop (context=0x55eb13bb80c0, error=0x7ffda9443eb8) at ../src/core/meta-context.c:445
#26 0x000055eb13017ec4 in ()
#27 0x00007f9209623510 in __libc_start_call_main (main=main@entry=0x55eb13017a30, argc=argc@entry=1, argv=argv@entry=0x7ffda9444058) at ../sysdeps/nptl/libc_start_call_main.h:58
#28 0x00007f92096235c9 in __libc_start_main_impl (main=0x55eb13017a30, argc=1, argv=0x7ffda9444058, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffda9444048) at ../csu/libc-start.c:381
#29 0x000055eb13018175 in ()
(gdb)
Edited by Łukasz Spintzyk