Xwayland crash in gdm as screen off and touchscreen detach.
This is a reproducible issue. Step to reproduce
- cold boot into gdm login screen.
- wait for 5 mins, and the screen will be turned off.
Expected result: The screen just turns black.
Actual result: Saw Vendor boot logo on the monitor (previous draw by plymoth during booting)
Analysis as it happens:
- Saw "LGDisplay Incell Touch" drop off the USB bus. Kernel message like: "usb 1-9: USB disconnect, device number 6" as the screen turned black.
- There is no switch on virtual tty.
- journal log from Xwayland "wl_display@1: error 0: invalid object 24"
- Xwayland and gnome-shell process both die as this happens.
- Try to add sleep(30) to OsVendorFatalError(), then both Xwayland and gnome-shell stop there for 30 more seconds.
- backtrace as Xwayland crashed:
#0 0x00007f447b8e818b in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007f447b8c7859 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x0000564374403f30 in OsAbort () at ../../../../os/utils.c:1351
#3 0x0000564374409369 in AbortServer () at ../../../../os/log.c:872
#4 0x000056437440a1ca in FatalError (f=f@entry=0x564374416266 "%s") at ../../../../os/log.c:1010
#5 0x000056437429c8b0 in xwl_log_handler (format=<optimized out>, args=<optimized out>) at ../../../../../hw/xwayland/xwayland.c:1312
#6 0x00007f447c3d027e in wl_log (fmt=fmt@entry=0x7f447c3d121a "%s@%u: error %d: %s\n") at ../src/wayland-util.c:404
#7 0x00007f447c3cb78b in display_handle_error (data=<optimized out>, display=0x56437639f000, object=0x56437639f000, code=0, message=<optimized out>)
at ../src/wayland-client.c:911
#8 0x00007f447b7c0ff5 in ?? () from /lib/x86_64-linux-gnu/libffi.so.7
#9 0x00007f447b7c040a in ?? () from /lib/x86_64-linux-gnu/libffi.so.7
#10 0x00007f447c3cf3a8 in wl_closure_invoke (closure=closure@entry=0x564376e57350, flags=flags@entry=1, target=<optimized out>,
target@entry=0x56437639f000, opcode=opcode@entry=0, data=<optimized out>) at ../src/connection.c:1018
#11 0x00007f447c3cbc48 in dispatch_event (display=display@entry=0x56437639f000, queue=<optimized out>) at ../src/wayland-client.c:1445
#12 0x00007f447c3cd1ef in dispatch_queue (queue=0x56437639f0d0, display=0x56437639f000) at ../src/wayland-client.c:1584
#13 wl_display_dispatch_queue_pending (display=0x56437639f000, queue=0x56437639f0d0) at ../src/wayland-client.c:1833
#14 0x00007f447c3cd280 in wl_display_dispatch_pending (display=<optimized out>) at ../src/wayland-client.c:1896
#15 0x000056437429c9bb in xwl_read_events (xwl_screen=0x564376399dd0) at ../../../../../hw/xwayland/xwayland.c:957
#16 0x0000564374401c61 in ospoll_wait (ospoll=0x56437638f4a0, timeout=<optimized out>) at ../../../../os/ospoll.c:657
#17 0x00005643743faa23 in WaitForSomething (are_ready=0) at ../../../../os/WaitFor.c:208
#18 0x00005643743ca4a7 in Dispatch () at ../../../../include/list.h:220
#19 0x00005643743ce794 in dix_main (argc=16, argv=0x7ffc44d49298, envp=<optimized out>) at ../../../../dix/main.c:276
#20 0x00007f447b8c90b3 in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
#21 0x000056437429c60e in _start ()```