Segfault when resizing a window while the window dies
Version: weston be57857a with !62 (closed) applied Environment: linux 4.20.5 gentoo hardened, mesa/libdrm tracking git master
Reproduction steps
- Start
mpv
window on some short video clip (happens with both vulkan or opengl, doesn't matter). Any other client probably also works, as long as the client is capable of dying. - Start resizing the window (hold down mod + right click on some corner)
- Keep resizing the window until the client exits (e.g. mpv terminates due to EOF)
- Release the right mouse button
- Segfault
GDB output
Core was generated by `/usr/bin/weston'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007feea443bf7a in resize_grab_button (grab=0x562acb32def0, time=<optimized out>, button=273, state_w=<optimized out>) at desktop-shell/shell.c:1653
1653 weston_desktop_surface_set_resizing(desktop_surface, false);
[Current thread is 1 (Thread 0x7feea480c900 (LWP 3612))]
(gdb) bt
#0 0x00007feea443bf7a in resize_grab_button (grab=0x562acb32def0, time=<optimized out>, button=273, state_w=<optimized out>) at desktop-shell/shell.c:1653
#1 0x00007feea52120e1 in notify_button (seat=<optimized out>, time=time@entry=0x7ffce8de25a0, button=273, state=state@entry=WL_POINTER_BUTTON_STATE_RELEASED)
at libweston/input.c:1900
#2 0x00007feea5273209 in handle_pointer_button (pointer_event=0x562acb31c9e0, libinput_device=<optimized out>) at libweston/libinput-device.c:171
#3 evdev_device_process_event (event=event@entry=0x562acb31c9e0) at libweston/libinput-device.c:516
#4 0x00007feea5272797 in process_event (event=0x562acb31c9e0) at libweston/libinput-seat.c:199
#5 process_events (input=<optimized out>) at libweston/libinput-seat.c:209
#6 0x00007feea5272a88 in udev_input_dispatch (input=0x562aca815f08) at libweston/libinput-seat.c:220
#7 libinput_source_dispatch (fd=<optimized out>, mask=<optimized out>, data=0x562aca815f08) at libweston/libinput-seat.c:230
#8 0x00007feea51e5d42 in wl_event_loop_dispatch (loop=0x562aca810940, timeout=timeout@entry=-1) at /usr/src/debug/dev-libs/wayland-1.16.0/wayland-1.16.0/src/event-loop.c:641
#9 0x00007feea51e48f2 in wl_display_run (display=0x562aca810860) at /usr/src/debug/dev-libs/wayland-1.16.0/wayland-1.16.0/src/wayland-server.c:1260
#10 0x0000562ac8e07061 in main (argc=<optimized out>, argv=<optimized out>) at compositor/main.c:2917
(gdb) info locals
resize = 0x562acb32def0
pointer = <optimized out>
state = <optimized out>
desktop_surface = <optimized out>
(gdb)