sway/sway/input
Alexander Orzechowski 88c17ece3b warp_to_constraint_cursor_hint: Handle NULL view
This might be the wrong fix, but the crash is happening because the ->data
field on an xwayland surface is NULL. A NULL data field is normal for
unmanaged surfaces, however it seems clients can do weird things: They can
create a cursor lock on a regular xwayland surface then make it unmanaged
by calling override_redirect. In this case, the xwayland server should
destroy the cursor lock, which is does, but does so in the wrong order
making it try to dereference a NULL pointer after sway has acknowledged
its new unmanaged status.

```
(gdb) bt full
0  0x000055fd91934861 in warp_to_constraint_cursor_hint (cursor=0x55fd93486c00)
    at ../sway/input/cursor.c:1243
        sy = 605
        lx = 6.9527431433545762e-310
        sx = 1272
        view = 0x0
        con = 0x7ffd1cdfe400
        ly = -6.949595189996421e+59
        constraint = 0x55fd93e7faa0
1  0x000055fd91934976 in handle_constraint_destroy (listener=0x55fd93f0fd58, data=0x55fd93e7faa0)
    at ../sway/input/cursor.c:1266
        sway_constraint = 0x55fd93f0fd30
        constraint = 0x55fd93e7faa0
        cursor = 0x55fd93486c00
2  0x00007fda8275bf6e in wl_signal_emit_mutable () at /usr/lib/libwayland-server.so.0
3  0x00007fda82e57016 in pointer_constraint_destroy (constraint=0x55fd93e7faa0)
    at ../subprojects/wlroots/types/wlr_pointer_constraints_v1.c:49
4  0x00007fda82e570dc in pointer_constraint_destroy_resource (resource=0x55fd933cf8f0)
    at ../subprojects/wlroots/types/wlr_pointer_constraints_v1.c:66
        constraint = 0x55fd93e7faa0
5  0x00007fda8275d8ba in  () at /usr/lib/libwayland-server.so.0
6  0x00007fda8275f6a9 in wl_resource_destroy () at /usr/lib/libwayland-server.so.0
7  0x00007fda82e56fb3 in resource_destroy (client=0x55fd93ea52e0, resource=0x55fd933cf8f0)
    at ../subprojects/wlroots/types/wlr_pointer_constraints_v1.c:39
8  0x00007fda81d8f4f6 in  () at /usr/lib/libffi.so.8
9  0x00007fda81d8bf5e in  () at /usr/lib/libffi.so.8
10 0x00007fda81d8eb73 in ffi_call () at /usr/lib/libffi.so.8
11 0x00007fda8275aada in  () at /usr/lib/libwayland-server.so.0
12 0x00007fda8275f01c in  () at /usr/lib/libwayland-server.so.0
13 0x00007fda8275d9e2 in wl_event_loop_dispatch () at /usr/lib/libwayland-server.so.0
14 0x00007fda8275e197 in wl_display_run () at /usr/lib/libwayland-server.so.0
15 0x000055fd919264d3 in server_run (server=0x55fd919a3a80 <server>) at ../sway/server.c:320
16 0x000055fd91925457 in main (argc=1, argv=0x7ffd1cdfed98) at ../sway/main.c:411
        verbose = false
        debug = false
        validate = false
        allow_unsupported_gpu = false
        config_path = 0x0
        c = -1
```
2023-01-04 10:37:36 +01:00
..
cursor.c warp_to_constraint_cursor_hint: Handle NULL view 2023-01-04 10:37:36 +01:00
input-manager.c seat: Avoid sending redundant keymaps on reload 2022-12-04 13:01:41 -07:00
keyboard.c seat: Set keyboard if seat keyboard is NULL 2022-12-19 10:02:58 +01:00
libinput.c Add libinput RotationAngle 2022-12-09 11:28:53 +01:00
seat.c seat: Avoid sending redundant keymaps on reload 2022-12-04 13:01:41 -07:00
seatop_default.c Replace math functions that promote float to double 2023-01-03 21:50:56 +01:00
seatop_down.c Replace math functions that promote float to double 2023-01-03 21:50:56 +01:00
seatop_move_floating.c container: Move pending state to state struct 2021-02-16 22:05:00 -05:00
seatop_move_tiling.c Add tab dragging functionality 2021-05-06 00:24:55 -04:00
seatop_resize_floating.c Handle border width and height on minimum floating sizes 2021-12-14 10:30:10 +01:00
seatop_resize_tiling.c container: Move pending state to state struct 2021-02-16 22:05:00 -05:00
switch.c Remove access to wlr_input_device union 2022-06-22 12:44:15 -04:00
tablet.c Make libinput backend optional 2022-11-28 13:28:15 -05:00
text_input.c sway/input: don't pass possibly invalid modifiers pointer 2022-03-04 08:37:07 +01:00