The ubutnu maintainer recently backported the upstream commits for pointer confinement and keyboard grabbing and since GNOME/wayland segfault when kvm is used "Thread 1 "Xwayland" received signal SIGSEGV, Segmentation fault. 0x00000092f4790b6e in zwp_pointer_constraints_v1_lock_pointer (lifetime=2, region=0x0, pointer=<optimized out>, surface=<optimized out>, zwp_pointer_constraints_v1=0x92f72d8060) at ./pointer-constraints-unstable-v1-client-protocol.h:347 347 ./pointer-constraints-unstable-v1-client-protocol.h: Aucun fichier ou dossier de ce type. #0 0x00000092f4790b6e in zwp_pointer_constraints_v1_lock_pointer (lifetime=2, region=0x0, pointer=<optimized out>, surface=<optimized out>, zwp_pointer_constraints_v1=0x92f72d8060) at ./pointer-constraints-unstable-v1-client-protocol.h:347 #1 xwl_pointer_warp_emulator_lock (warp_emulator=0x92f7951ab0) at ../../../../../hw/xwayland/xwayland-input.c:2590 #2 0x00000092f47930f8 in xwl_seat_maybe_lock_on_hidden_cursor (xwl_seat=xwl_seat@entry=0x92f72d7dd0) at ../../../../../hw/xwayland/xwayland-input.c:2762 #3 0x00000092f4794660 in xwl_seat_maybe_lock_on_hidden_cursor (xwl_seat=0x92f72d7dd0) at ../../../../../hw/xwayland/xwayland-input.c:2823 #4 xwl_seat_confine_pointer (xwl_seat=0x92f72d7dd0, xwl_window=0x92f7464630) at ../../../../../hw/xwayland/xwayland-input.c:2814 #5 0x00000092f48d60cf in ActivatePointerGrab (mouse=0x92f724e890, grab=0x92f797b910, time=..., autoGrab=<optimized out>) at ../../../../dix/events.c:1531 #6 0x00000092f48d0db4 in GrabDevice (client=client@entry=0x92f769b470, dev=dev@entry=0x92f724e890, pointer_mode=1, keyboard_mode=1, grabWindow=<optimized out>, ownerEvents=<optimized out>, ctime=0, mask=0x7ffcba605420, grabtype=1, curs=0, confineToWin=31457299, status=0x7ffcba60541f "") at ../../../../dix/events.c:5120 #7 0x00000092f48d3a1a in ProcGrabPointer (client=0x92f769b470) at ../../../../dix/events.c:4908 #8 0x00000092f48c5e58 in Dispatch () at ../../../../dix/dispatch.c:479 #9 0x00000092f48c9e80 in dix_main (argc=10, argv=0x7ffcba605628, envp=<optimized out>) at ../../../../dix/main.c:287 #10 0x00007f6be880b421 in __libc_start_main (main=0x92f478ec50 <main>, argc=10, argv=0x7ffcba605628, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffcba605618) at ../csu/libc-start.c:291 #11 0x00000092f478ec8a in _start ()"
There've been several fixes in all those trees upstream. Can you try with upstream code instead (for both mutter, gnome-shell, Xwayland) so we can rule out a problem with the Ubuntu backport? Does it occur only in kvm? What about real hardware?
> There've been several fixes in all those trees upstream. > Can you try with upstream code instead (for both mutter, gnome-shell, Xwayland) > so we can rule out a problem with the Ubuntu backport? I can try having a go, is there specific branches to try? or just GNOME trunk (3.25) ones? > Does it occur only in kvm? What about real hardware? sorry if the description was not clear, that's using GNOME on a laptop not in kvm, it's start kvm in the session to do tested on a daily iso which takes xwayland down
I can reproduce a similar crash using qemu-kvm with SDL backend and alt-tabbing between the qemu window and some ohter native window in gnome-shell: Thread 1 "Xwayland" received signal SIGSEGV, Segmentation fault. 0x000000000042b77e in zwp_pointer_constraints_v1_lock_pointer (lifetime=2, region=0x0, pointer=<optimized out>, surface=<optimized out>, zwp_pointer_constraints_v1=0x1ef37d0) at pointer-constraints-unstable-v1-client-protocol.h:347 347 id = wl_proxy_marshal_constructor((struct wl_proxy *) zwp_pointer_constraints_v1, (gdb) bt #0 0x000000000042b77e in zwp_pointer_constraints_v1_lock_pointer (lifetime=2, region=0x0, pointer=<optimized out>, surface=<optimized out>, zwp_pointer_constraints_v1=0x1ef37d0) at pointer-constraints-unstable-v1-client-protocol.h:347 #1 xwl_pointer_warp_emulator_lock (warp_emulator=0x2c26db0) at xwayland-input.c:2584 #2 0x000000000042d998 in xwl_seat_maybe_lock_on_hidden_cursor (xwl_seat=xwl_seat@entry=0x29142f0) at xwayland-input.c:2756 #3 0x000000000042ef15 in xwl_seat_maybe_lock_on_hidden_cursor (xwl_seat=0x29142f0) at xwayland-input.c:2765 #4 xwl_seat_cursor_visibility_changed (xwl_seat=xwl_seat@entry=0x29142f0) at xwayland-input.c:2768 #5 0x000000000042fa68 in xwl_set_cursor (device=<optimized out>, screen=<optimized out>, cursor=<optimized out>, x=<optimized out>, y=<optimized out>) at xwayland-cursor.c:245 #6 0x00000000004c4b8a in miPointerUpdateSprite (pDev=0x28e6fa0) at mipointer.c:468 #7 0x00000000004c4dda in miPointerDisplayCursor (pDev=0x28e6fa0, pScreen=0x1ee6740, pCursor=0x2b988a0) at mipointer.c:206 #8 0x00000000004b2250 in CursorDisplayCursor (pDev=0x28e6fa0, pScreen=0x1ee6740, pCursor=0x2b988a0) at cursor.c:150 #9 0x000000000052e44f in AnimCurDisplayCursor (pDev=0x28e6fa0, pScreen=0x1ee6740, pCursor=0x2b988a0) at animcur.c:220 #10 0x000000000044cc4b in ChangeToCursor (pDev=0x28e6fa0, cursor=0x2b988a0) at events.c:936 #11 0x0000000000453d3e in ActivatePointerGrab (mouse=0x28e6fa0, grab=0x2d1d7f0, time=..., autoGrab=<optimized out>) at events.c:1542 #12 0x000000000044ecd1 in GrabDevice (client=client@entry=0x2ae5720, dev=dev@entry=0x28e6fa0, pointer_mode=1, keyboard_mode=1, grabWindow=<optimized out>, ownerEvents=<optimized out>, ctime=0, mask=0x7ffce3a623f0, grabtype=1, curs=0, confineToWin=4194314, status=0x7ffce3a623ef "") at events.c:5120 #13 0x000000000045180a in ProcGrabPointer (client=0x2ae5720) at events.c:4908 #14 0x0000000000443ffa in Dispatch () at dispatch.c:478 #15 0x0000000000447f08 in dix_main (argc=10, argv=0x7ffce3a625e8, envp=<optimized out>) at main.c:276 #16 0x00007efc0168250a in __libc_start_main () from /lib64/libc.so.6 #17 0x000000000042979a in _start ()
(gdb) f 1 #1 xwl_pointer_warp_emulator_lock (warp_emulator=0x2c26db0) at xwayland-input.c:2584 2584 zwp_pointer_constraints_v1_lock_pointer(pointer_constraints, (gdb) list 2579 struct xwl_window *lock_window = xwl_seat->focus_window; 2580 2581 warp_emulator->locked_window = lock_window; 2582 2583 warp_emulator->locked_pointer = 2584 zwp_pointer_constraints_v1_lock_pointer(pointer_constraints, 2585 lock_window->surface, 2586 xwl_seat->wl_pointer, 2587 NULL, 2588 ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_PERSISTENT); (gdb) p *xwl_seat value has been optimized out (gdb) p *lock_window Cannot access memory at address 0x0
Possible fix here: https://patchwork.freedesktop.org/patch/174476/
the patch seems to fix the segfault indeed
Patch has bee pushed in git master, commit cdd0352b
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.