Use after free leading to a crash when closing weston with SIGINT
Use the screen-share module, start a freerdp connection to the server then attempt to close the server:
(gdb) bt #0 0x00007faadcab78e4 in libinput_device_unref () at /usr/lib/x86_64-linux-gnu/libinput.so.10 #1 0x00007faadb4032eb in evdev_device_destroy (device=0x55f3a9c6bbc0) at ../libweston/libinput-device.c:744 #2 0x00007faadb401264 in udev_seat_remove_devices (seat=0x55f3a9c7ca70) at ../libweston/libinput-seat.c:157 #3 0x00007faadb401bac in udev_seat_destroy (seat=0x55f3a9c7ca70) at ../libweston/libinput-seat.c:471 #4 0x00007faadb4018a6 in udev_input_destroy (input=0x55f3a9a16470) at ../libweston/libinput-seat.c:375 #5 0x00007faadb3f13c0 in drm_destroy (ec=0x55f3a9a0e860) at ../libweston/backend-drm/drm.c:2469 #6 0x00007faadcb53bbe in weston_compositor_tear_down (compositor=0x55f3a9a0e860) at ../libweston/compositor.c:7596 #7 0x000055f3a8f50291 in main (argc=1, argv=0x7ffefedbc608) at ../compositor/main.c:3389
Compositor tear down will attempt to remove all devices, but it seems that the underlying structure that was keeping a reference to a seat was already free'ed. Seems to be the classical use after free on the heap.