Assert failure on Super-Tab to a destroyed surface
How to reproduce:
- Have animations enabled
- Have at least two toplevel surfaces visible, including one which will automatically close later
- Press and hold Super-Tab to select the auto-closing surface
- Wait for the surface to close
- Release Super-Tab before the animation is done.
This will reliably crash Weston here:
(gdb) bt
#0 0x00007fcc2a746d22 in raise () at /usr/lib/libc.so.6
#1 0x00007fcc2a730862 in abort () at /usr/lib/libc.so.6
#2 0x00007fcc2a730747 in _nl_load_domain.cold () at /usr/lib/libc.so.6
#3 0x00007fcc2a73f616 in () at /usr/lib/libc.so.6
#4 0x00007fcc24031c1d in activate (shell=0x55e0f99f13b0, view=<optimized out>, seat=0x55e0f99b4370, flags=1) at ../desktop-shell/shell.c:3854
#5 0x00007fcc24032aed in switcher_destroy (switcher=0x55e0f99fdca0) at ../desktop-shell/shell.c:4571
#6 0x00007fcc2a6e8f5c in update_modifier_state (state=WL_KEYBOARD_KEY_STATE_RELEASED, key=125, serial=988, seat=0x55e0f99b4370) at ../libweston/input.c:2082
#7 notify_key (seat=<optimized out>, time=time@entry=0x7ffdad9c5f80, key=125, state=state@entry=WL_KEYBOARD_KEY_STATE_RELEASED, update_state=update_state@entry=STATE_UPDATE_AUTOMATIC) at ../libweston/input.c:2232
#8 0x00007fcc2a8f76c5 in handle_keyboard_key (keyboard_event=0x55e0f99b4d90, libinput_device=<optimized out>) at ../libweston/libinput-device.c:100
#9 evdev_device_process_event (event=0x55e0f99b4d90) at ../libweston/libinput-device.c:531
#10 process_event (event=0x55e0f99b4d90) at ../libweston/libinput-seat.c:210
#11 process_events (input=input@entry=0x55e0f936c528) at ../libweston/libinput-seat.c:220
#12 0x00007fcc2a8f78fd in udev_input_dispatch (input=0x55e0f936c528) at ../libweston/libinput-seat.c:231
#13 libinput_source_dispatch (fd=<optimized out>, mask=<optimized out>, data=0x55e0f936c528) at ../libweston/libinput-seat.c:241
#14 0x00007fcc2a6a0902 in wl_event_loop_dispatch (loop=0x55e0f935cf60, timeout=timeout@entry=-1) at ../wayland/src/event-loop.c:1027
#15 0x00007fcc2a69dce7 in wl_display_run (display=display@entry=0x55e0f9362f40) at ../wayland/src/wayland-server.c:1364
#16 0x00007fcc2a914895 in wet_main (argc=<optimized out>, argv=0x7ffdad9c6b08, test_data=0x0) at ../compositor/main.c:3503
#17 0x00007fcc2a731b25 in __libc_start_main () at /usr/lib/libc.so.6
#18 0x000055e0f8d7b05e in _start ()