Wayland pointer-constraints-unstable-v1 crashes mutter
I wrote an application that uses pointer-constraints-unstable-v1 for Wayland to capture the mouse, which works fine until I press alt tab to switch to another window when the mouse is still captured, crashing mutter and bumping me back to the gdm screen after the screen goes dark for a second. I use mutter 3.30.2-2 on Fedora (4.19.13-300 FC29).
EDIT: The -1 parameter as lifetime I put in is wrong. It should have been either ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ONESHOT or ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_PERSISTENT. So the main problem seems to be that mutter allows the creation of an invalid object.
Relevant code that causes the crash:
void release()
{
zwp_confined_pointer_v1_destroy(_confined);
_confined = nullptr;
}
void confine()
{
_confined = zwp_pointer_constraints_v1_confine_pointer(_constraints, _parent, _pointer, nullptr, -1);
if (!_confined)
throw exception(except_e::NATIVE_INPUT, "zwp_pointer_constraints_v1_confine_pointer");
}
static void pointerEnter(void *data, wl_pointer *wl_pointer, uint32_t serial, wl_surface *surface, wl_fixed_t surface_x, wl_fixed_t surface_y)
{
// Hide the cursor
auto ptr = static_cast<wayland_input*>(data);
wl_pointer_set_cursor(ptr->_pointer, serial, nullptr, 0, 0);
// Capture the cursor
ptr->confine();
}
static void pointerLeave(void *data, wl_pointer *wl_pointer, uint32_t serial, wl_surface *surface)
{
auto ptr = static_cast<wayland_input*>(data);
ptr->release();
}
Relevant line of journalctl:
Jan 04 13:13:20 localhost.localdomain org.gnome.Shell.desktop[1640]: mutter:ERROR:wayland/meta-wayland-pointer-constraints.c:549:meta_wayland_pointer_constraint_deactivate: code should not be reached
Entire journalctl around the crash of /usr/bin/gnome-shell:
Jan 04 13:12:12 localhost.localdomain org.gnome.Shell.desktop[1184]: The XKEYBOARD keymap compiler (xkbcomp) reports:
Jan 04 13:12:12 localhost.localdomain org.gnome.Shell.desktop[1184]: > Warning: Unsupported high keycode 372 for name <I372> ignored
Jan 04 13:12:12 localhost.localdomain org.gnome.Shell.desktop[1184]: > X11 cannot support keycodes above 255.
Jan 04 13:12:12 localhost.localdomain org.gnome.Shell.desktop[1184]: > This warning only shows for the first high keycode.
Jan 04 13:12:12 localhost.localdomain org.gnome.Shell.desktop[1184]: Errors from xkbcomp are not fatal to the X server
Jan 04 13:12:15 localhost.localdomain gnome-shell[1184]: g_dir_open_with_errno: assertion 'path != NULL' failed
Jan 04 13:12:15 localhost.localdomain gnome-shell[1184]: g_filename_to_utf8: assertion 'opsysstring != NULL' failed
Jan 04 13:12:15 localhost.localdomain gnome-shell[1184]: g_dir_open_with_errno: assertion 'path != NULL' failed
Jan 04 13:12:15 localhost.localdomain gnome-shell[1184]: g_filename_to_utf8: assertion 'opsysstring != NULL' failed
Jan 04 13:12:15 localhost.localdomain gnome-shell[1184]: Error looking up permission: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for geolocation
Jan 04 13:12:15 localhost.localdomain org.gnome.Shell.desktop[1184]: The XKEYBOARD keymap compiler (xkbcomp) reports:
Jan 04 13:12:15 localhost.localdomain org.gnome.Shell.desktop[1184]: > Warning: Unsupported maximum keycode 374, clipping.
Jan 04 13:12:15 localhost.localdomain org.gnome.Shell.desktop[1184]: > X11 cannot support keycodes above 255.
Jan 04 13:12:15 localhost.localdomain org.gnome.Shell.desktop[1184]: > Warning: Unsupported high keycode 372 for name <I372> ignored
Jan 04 13:12:15 localhost.localdomain org.gnome.Shell.desktop[1184]: > X11 cannot support keycodes above 255.
Jan 04 13:12:15 localhost.localdomain org.gnome.Shell.desktop[1184]: > This warning only shows for the first high keycode.
Jan 04 13:12:15 localhost.localdomain org.gnome.Shell.desktop[1184]: Errors from xkbcomp are not fatal to the X server
Jan 04 13:12:15 localhost.localdomain gnome-shell[1184]: JS WARNING: [resource:///org/gnome/shell/ui/windowManager.js 1569]: reference to undefined property "MetaWindowXwayland"
Jan 04 13:12:21 localhost.localdomain org.gnome.Shell.desktop[1640]: The XKEYBOARD keymap compiler (xkbcomp) reports:
Jan 04 13:12:21 localhost.localdomain org.gnome.Shell.desktop[1640]: > Warning: Unsupported high keycode 372 for name <I372> ignored
Jan 04 13:12:21 localhost.localdomain org.gnome.Shell.desktop[1640]: > X11 cannot support keycodes above 255.
Jan 04 13:12:21 localhost.localdomain org.gnome.Shell.desktop[1640]: > This warning only shows for the first high keycode.
Jan 04 13:12:21 localhost.localdomain org.gnome.Shell.desktop[1640]: Errors from xkbcomp are not fatal to the X server
Jan 04 13:12:22 localhost.localdomain gnome-shell[1640]: g_dir_open_with_errno: assertion 'path != NULL' failed
Jan 04 13:12:22 localhost.localdomain gnome-shell[1640]: g_filename_to_utf8: assertion 'opsysstring != NULL' failed
Jan 04 13:12:22 localhost.localdomain gnome-shell[1640]: g_dir_open_with_errno: assertion 'path != NULL' failed
Jan 04 13:12:22 localhost.localdomain gnome-shell[1640]: g_filename_to_utf8: assertion 'opsysstring != NULL' failed
Jan 04 13:12:22 localhost.localdomain gnome-shell[1640]: Error looking up permission: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for geolocation
Jan 04 13:12:22 localhost.localdomain org.gnome.Shell.desktop[1640]: The XKEYBOARD keymap compiler (xkbcomp) reports:
Jan 04 13:12:22 localhost.localdomain org.gnome.Shell.desktop[1640]: > Warning: Unsupported maximum keycode 374, clipping.
Jan 04 13:12:22 localhost.localdomain org.gnome.Shell.desktop[1640]: > X11 cannot support keycodes above 255.
Jan 04 13:12:22 localhost.localdomain org.gnome.Shell.desktop[1640]: > Warning: Unsupported high keycode 372 for name <I372> ignored
Jan 04 13:12:22 localhost.localdomain org.gnome.Shell.desktop[1640]: > X11 cannot support keycodes above 255.
Jan 04 13:12:22 localhost.localdomain org.gnome.Shell.desktop[1640]: > This warning only shows for the first high keycode.
Jan 04 13:12:22 localhost.localdomain org.gnome.Shell.desktop[1640]: Errors from xkbcomp are not fatal to the X server
Jan 04 13:12:23 localhost.localdomain gnome-shell[1640]: STACK_OP_ADD: window 0x1800001 already in stack
Jan 04 13:12:23 localhost.localdomain gnome-shell[1640]: STACK_OP_ADD: window 0x1800001 already in stack
Jan 04 13:12:23 localhost.localdomain gnome-shell[1640]: GNOME Shell started at Fri Jan 04 2019 13:12:22 GMT+0100 (CET)
Jan 04 13:12:26 localhost.localdomain code.desktop[1640]: [main 1:12:26 PM] update#setState idle
Jan 04 13:12:27 localhost.localdomain code.desktop[1640]: bash: cannot set terminal process group (-1): Inappropriate ioctl for device
Jan 04 13:12:27 localhost.localdomain code.desktop[1640]: bash: no job control in this shell
Jan 04 13:12:31 localhost.localdomain gnome-shell[1184]: Connection to xwayland lost
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_fast: "/org/gnome/desktop/interface/" (establishing: 0, active: 0)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_fast: "/org/gnome/settings-daemon/peripherals/mouse/" (establishing: 0, active: 0)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_fast: "/org/gnome/desktop/sound/" (establishing: 0, active: 0)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_fast: "/org/gnome/desktop/privacy/" (establishing: 0, active: 0)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_fast: "/org/gnome/desktop/wm/preferences/" (establishing: 0, active: 0)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_fast: "/org/gnome/settings-daemon/plugins/xsettings/" (establishing: 0, active: 0)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_fast: "/org/gnome/desktop/a11y/" (establishing: 0, active: 0)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_established: "/org/gnome/desktop/interface/" (establishing: 1)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_established: "/org/gnome/settings-daemon/peripherals/mouse/" (establishing: 1)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_established: "/org/gnome/desktop/sound/" (establishing: 1)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_established: "/org/gnome/desktop/privacy/" (establishing: 1)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_established: "/org/gnome/desktop/wm/preferences/" (establishing: 1)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_established: "/org/gnome/settings-daemon/plugins/xsettings/" (establishing: 1)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_established: "/org/gnome/desktop/a11y/" (establishing: 1)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_fast: "/org/gnome/terminal/legacy/" (establishing: 0, active: 0)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # unwatch_fast: "/org/gnome/terminal/legacy/" (active: 0, establishing: 1)
Jan 04 13:12:40 localhost.localdomain org.gnome.Terminal.desktop[1640]: # watch_established: "/org/gnome/terminal/legacy/" (establishing: 0)
Jan 04 13:13:10 localhost.localdomain gnome-shell[1640]: gsignal.c:2423: signal 'geometry-changed' is invalid for instance '0x55ebb4d7c7c0' of type 'MetaSurfaceActorWayland'
Jan 04 13:13:20 localhost.localdomain org.gnome.Shell.desktop[1640]: **
Jan 04 13:13:20 localhost.localdomain org.gnome.Shell.desktop[1640]: mutter:ERROR:wayland/meta-wayland-pointer-constraints.c:549:meta_wayland_pointer_constraint_deactivate: code should not be reached
Jan 04 13:13:20 localhost.localdomain org.gnome.Shell.desktop[1640]: == Stack trace for context 0x55ebb28402c0 ==
Jan 04 13:13:20 localhost.localdomain org.gnome.Shell.desktop[1640]: #0 55ebb2a53c60 i resource:///org/gnome/shell/ui/main.js:431 (7fb914ee6940 @ 128)
Jan 04 13:13:20 localhost.localdomain org.gnome.Shell.desktop[1640]: #1 55ebb2a53b90 i resource:///org/gnome/shell/ui/switcherPopup.js:118 (7fb914c45c10 @ 55)
Jan 04 13:13:20 localhost.localdomain org.gnome.Shell.desktop[1640]: #2 7ffd2f45e6d0 b resource:///org/gnome/gjs/modules/_legacy.js:82 (7fb914eb0b80 @ 71)
Jan 04 13:13:20 localhost.localdomain org.gnome.Shell.desktop[1640]: #3 55ebb2a53ae0 i resource:///org/gnome/shell/ui/windowManager.js:2028 (7fb914a2c5e0 @ 389)
Jan 04 13:13:20 localhost.localdomain org.gnome.Shell.desktop[1640]: #4 7ffd2f45f670 b resource:///org/gnome/gjs/modules/_legacy.js:82 (7fb914eb0b80 @ 71)
Jan 04 13:13:20 localhost.localdomain audit[1640]: ANOM_ABEND auid=1000 uid=1000 gid=1000 ses=2 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 pid=1640 comm="gnome-shell" exe="/usr/bin/gnome-shell" sig=6 res=1
Jan 04 13:13:20 localhost.localdomain org.gnome.Shell.desktop[1640]: #5 55ebb2a53a20 i self-hosted:981 (7fb914eedf70 @ 474)
Jan 04 13:13:21 localhost.localdomain org.gnome.Shell.desktop[1640]: (EE) failed to read Wayland events: Broken pipe
Jan 04 13:13:23 localhost.localdomain org.gnome.Shell.desktop[2843]: The XKEYBOARD keymap compiler (xkbcomp) reports:
Jan 04 13:13:23 localhost.localdomain org.gnome.Shell.desktop[2843]: > Warning: Unsupported high keycode 372 for name <I372> ignored
Jan 04 13:13:23 localhost.localdomain org.gnome.Shell.desktop[2843]: > X11 cannot support keycodes above 255.
Jan 04 13:13:23 localhost.localdomain org.gnome.Shell.desktop[2843]: > This warning only shows for the first high keycode.
Jan 04 13:13:23 localhost.localdomain org.gnome.Shell.desktop[2843]: Errors from xkbcomp are not fatal to the X server
Jan 04 13:13:23 localhost.localdomain gnome-shell[2843]: g_dir_open_with_errno: assertion 'path != NULL' failed
Jan 04 13:13:23 localhost.localdomain gnome-shell[2843]: g_filename_to_utf8: assertion 'opsysstring != NULL' failed
Jan 04 13:13:23 localhost.localdomain gnome-shell[2843]: g_dir_open_with_errno: assertion 'path != NULL' failed
Jan 04 13:13:23 localhost.localdomain gnome-shell[2843]: g_filename_to_utf8: assertion 'opsysstring != NULL' failed
Jan 04 13:13:24 localhost.localdomain gnome-shell[2843]: Error looking up permission: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for geolocation
Jan 04 13:13:24 localhost.localdomain org.gnome.Shell.desktop[2843]: The XKEYBOARD keymap compiler (xkbcomp) reports:
Jan 04 13:13:24 localhost.localdomain org.gnome.Shell.desktop[2843]: > Warning: Unsupported maximum keycode 374, clipping.
Jan 04 13:13:24 localhost.localdomain org.gnome.Shell.desktop[2843]: > X11 cannot support keycodes above 255.
Jan 04 13:13:24 localhost.localdomain org.gnome.Shell.desktop[2843]: > Warning: Unsupported high keycode 372 for name <I372> ignored
Jan 04 13:13:24 localhost.localdomain org.gnome.Shell.desktop[2843]: > X11 cannot support keycodes above 255.
Jan 04 13:13:24 localhost.localdomain org.gnome.Shell.desktop[2843]: > This warning only shows for the first high keycode.
Jan 04 13:13:24 localhost.localdomain org.gnome.Shell.desktop[2843]: Errors from xkbcomp are not fatal to the X server
Jan 04 13:13:24 localhost.localdomain gnome-shell[2843]: JS WARNING: [resource:///org/gnome/shell/ui/windowManager.js 1569]: reference to undefined property "MetaWindowXwayland"
Jan 04 13:13:28 localhost.localdomain org.gnome.Shell.desktop[3261]: The XKEYBOARD keymap compiler (xkbcomp) reports:
Jan 04 13:13:28 localhost.localdomain org.gnome.Shell.desktop[3261]: > Warning: Unsupported high keycode 372 for name <I372> ignored
Jan 04 13:13:28 localhost.localdomain org.gnome.Shell.desktop[3261]: > X11 cannot support keycodes above 255.
Jan 04 13:13:28 localhost.localdomain org.gnome.Shell.desktop[3261]: > This warning only shows for the first high keycode.
Jan 04 13:13:28 localhost.localdomain org.gnome.Shell.desktop[3261]: Errors from xkbcomp are not fatal to the X server
Jan 04 13:13:29 localhost.localdomain gnome-shell[3261]: g_dir_open_with_errno: assertion 'path != NULL' failed
Jan 04 13:13:29 localhost.localdomain gnome-shell[3261]: g_filename_to_utf8: assertion 'opsysstring != NULL' failed
Jan 04 13:13:29 localhost.localdomain gnome-shell[3261]: g_dir_open_with_errno: assertion 'path != NULL' failed
Jan 04 13:13:29 localhost.localdomain gnome-shell[3261]: g_filename_to_utf8: assertion 'opsysstring != NULL' failed
Jan 04 13:13:29 localhost.localdomain gnome-shell[3261]: Error looking up permission: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for geolocation
Jan 04 13:13:29 localhost.localdomain org.gnome.Shell.desktop[3261]: The XKEYBOARD keymap compiler (xkbcomp) reports:
Jan 04 13:13:29 localhost.localdomain org.gnome.Shell.desktop[3261]: > Warning: Unsupported maximum keycode 374, clipping.
Jan 04 13:13:29 localhost.localdomain org.gnome.Shell.desktop[3261]: > X11 cannot support keycodes above 255.
Jan 04 13:13:29 localhost.localdomain org.gnome.Shell.desktop[3261]: > Warning: Unsupported high keycode 372 for name <I372> ignored
Jan 04 13:13:29 localhost.localdomain org.gnome.Shell.desktop[3261]: > X11 cannot support keycodes above 255.
Jan 04 13:13:29 localhost.localdomain org.gnome.Shell.desktop[3261]: > This warning only shows for the first high keycode.
Jan 04 13:13:29 localhost.localdomain org.gnome.Shell.desktop[3261]: Errors from xkbcomp are not fatal to the X server
Jan 04 13:13:30 localhost.localdomain gnome-shell[3261]: STACK_OP_ADD: window 0x1800001 already in stack
Jan 04 13:13:30 localhost.localdomain gnome-shell[3261]: STACK_OP_ADD: window 0x1800001 already in stack
Jan 04 13:13:30 localhost.localdomain gnome-shell[3261]: GNOME Shell started at Fri Jan 04 2019 13:13:29 GMT+0100 (CET)
Jan 04 13:13:30 localhost.localdomain gnome-shell[3261]: JS WARNING: [resource:///org/gnome/shell/ui/notificationDaemon.js 81]: reference to undefined property "image-path"
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_fast: "/org/gnome/desktop/interface/" (establishing: 0, active: 0)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_fast: "/org/gnome/settings-daemon/peripherals/mouse/" (establishing: 0, active: 0)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_fast: "/org/gnome/desktop/sound/" (establishing: 0, active: 0)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_fast: "/org/gnome/desktop/privacy/" (establishing: 0, active: 0)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_fast: "/org/gnome/desktop/wm/preferences/" (establishing: 0, active: 0)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_fast: "/org/gnome/settings-daemon/plugins/xsettings/" (establishing: 0, active: 0)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_fast: "/org/gnome/desktop/a11y/" (establishing: 0, active: 0)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_established: "/org/gnome/desktop/interface/" (establishing: 1)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_established: "/org/gnome/settings-daemon/peripherals/mouse/" (establishing: 1)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_established: "/org/gnome/desktop/sound/" (establishing: 1)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_established: "/org/gnome/desktop/privacy/" (establishing: 1)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_established: "/org/gnome/desktop/wm/preferences/" (establishing: 1)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_established: "/org/gnome/settings-daemon/plugins/xsettings/" (establishing: 1)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_established: "/org/gnome/desktop/a11y/" (establishing: 1)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_fast: "/org/gnome/terminal/legacy/" (establishing: 0, active: 0)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # unwatch_fast: "/org/gnome/terminal/legacy/" (active: 0, establishing: 1)
Jan 04 13:13:34 localhost.localdomain org.gnome.Terminal.desktop[3261]: # watch_established: "/org/gnome/terminal/legacy/" (establishing: 0)
Jan 04 13:13:38 localhost.localdomain gnome-shell[2843]: Connection to xwayland lost