Xorg seg faults when a USB keyboard is connected with '%' character in the product name
Hello!
I was trying to boot a live usb on my computer and found that if I had a USB keyboard plugged in with a %
in the product name then Xorg would segfault immediately after starting, if I plug in a keyboard once it is successfully running then the running Xorg will segfault immediately.
If I reflash the keyboard to be named Test
instead of Test%
with no other changes, then everything works as expected.
I have been able to reproduce this in a VM and actual hardware.
Here is the logs from the segfault:
[ 233.162] (II) event4 - VirtualBox USB Tablet: device is a pointer
[ 233.163] (II) config/udev: Adding input device VirtualBox USB Tablet (/dev/input/js0)
[ 233.163] (II) No input driver specified, ignoring this device.
[ 233.163] (II) This device may have been added with another device file.
[ 233.163] (II) config/udev: Adding input device VirtualBox USB Tablet (/dev/input/mouse0)
[ 233.163] (II) No input driver specified, ignoring this device.
[ 233.163] (II) This device may have been added with another device file.
[ 233.164] (II) config/udev: Adding input device Test Manufacturer Test% (/dev/input/event7)
[ 233.164] (**) Test Manufacturer Test%: Applying InputClass "libinput keyboard catchall"
[ 233.164] (II) Using input driver 'libinput' for 'Test Manufacturer Test%'
[ 233.164] (II) systemd-logind: got fd for /dev/input/event7 13:71 fd 32 paused 0
[ 233.164] (**) Test Manufacturer Test%: always reports core events
[ 233.164] (**) Option "Device" "/dev/input/event7"
[ 233.164] (**) Option "_source" "server/udev"
[ 233.165] (II) event7 - Test Manufacturer Test%: is tagged by udev as: Keyboard
[ 233.165] (II) event7 - Test Manufacturer Test%: device is a keyboard
[ 233.166] (II) event7 - Test Manufacturer Test%: device removed
[ 233.166] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:06.0/usb1/1-2/1-2:1.0/0003:FB9C:B260.0002/input/input8/event7"
[ 233.166] (II) XINPUT: Adding extended input device "Test Manufacturer Test%" (type: KEYBOARD, id 11)
[ 233.166] (**) Option "xkb_model" "pc105"
[ 233.166] (**) Option "xkb_layout" "us"
[ 233.166] (II) event7 - Test Manufacturer Test%: is tagged by udev as: Keyboard
[ 233.166] (II) event7 - Test Manufacturer Test%: device is a keyboard
[ 233.167] (II) config/udev: Adding input device Test Manufacturer Test% System Control (/dev/input/event9)
[ 233.167] (**) Test Manufacturer Test% System Control: Applying InputClass "libinput keyboard catchall"
[ 233.167] (II) Using input driver 'libinput' for 'Test Manufacturer Test% System Control'
[ 233.168] (II) systemd-logind: got fd for /dev/input/event9 13:73 fd 33 paused 0
[ 233.168] (**) Test Manufacturer Test% System Control: always reports core events
[ 233.168] (**) Option "Device" "/dev/input/event9"
[ 233.168] (**) Option "_source" "server/udev"
[ 233.169] (II)(EE)
[ 233.170] (EE) Backtrace:
[ 233.170] (EE) 0: /usr/lib/xorg/Xorg (OsLookupColor+0x139) [0x559237746d39]
[ 233.170] (EE) 1: /lib/x86_64-linux-gnu/libc.so.6 (__sigaction+0x50) [0x7f1c36e2a520]
[ 233.170] (EE) 2: /lib/x86_64-linux-gnu/libc.so.6 (wcstof128+0x1c75) [0x7f1c36ebf505]
[ 233.171] (EE) 3: /lib/x86_64-linux-gnu/libc.so.6 (wcsrtombs+0xae) [0x7f1c36ead63e]
[ 233.171] (EE) 4: /lib/x86_64-linux-gnu/libc.so.6 (psiginfo+0x1069b) [0x7f1c36e5a8cb]
[ 233.171] (EE) 5: /lib/x86_64-linux-gnu/libc.so.6 (psiginfo+0x1470a) [0x7f1c36e5e93a]
[ 233.172] (EE) 6: /lib/x86_64-linux-gnu/libc.so.6 (vscanf+0x14a) [0x7f1c36e7041a]
[ 233.172] (EE) 7: /usr/lib/xorg/Xorg (Xvscnprintf+0x27) [0x55923774ec47]
[ 233.172] (EE) 8: /usr/lib/xorg/Xorg (LogVMessageVerb+0x69) [0x559237750b09]
[ 233.172] (EE) 9: /lib/x86_64-linux-gnu/libinput.so.10 (libinput_device_config_rotation_get_default_angle+0x44d) [0x7f1c2e2c36bd]
[ 233.172] (EE) 10: /lib/x86_64-linux-gnu/libinput.so.10 (libinput_device_config_rotation_get_default_angle+0x2a87) [0x7f1c2e2c5cf7]
[ 233.172] (EE) 11: /lib/x86_64-linux-gnu/libinput.so.10 (libinput_device_config_rotation_get_default_angle+0x5baf) [0x7f1c2e2c8e1f]
[ 233.173] (EE) 12: /lib/x86_64-linux-gnu/libinput.so.10 (libinput_path_create_context+0x58fe) [0x7f1c2e2e54be]
[ 233.173] (EE) 13: /lib/x86_64-linux-gnu/libinput.so.10 (libinput_path_create_context+0x5b69) [0x7f1c2e2e5729]
[ 233.173] (EE) 14: /lib/x86_64-linux-gnu/libinput.so.10 (libinput_path_add_device+0x115) [0x7f1c2e2e58a5]
[ 233.173] (EE) unw_get_proc_name failed: no unwind info found [-10]
[ 233.173] (EE) 15: /usr/lib/xorg/modules/input/libinput_drv.so (?+0x0) [0x7f1c2e30a4ef]
[ 233.173] (EE) 16: /usr/lib/xorg/Xorg (xf86DeleteInput+0x20c) [0x55923762ba2c]
[ 233.173] (EE) 17: /usr/lib/xorg/Xorg (config_fini+0xf70) [0x55923763e690]
[ 233.173] (EE) 18: /usr/lib/xorg/Xorg (config_fini+0x1623) [0x55923763ed43]
[ 233.173] (EE) 19: /usr/lib/xorg/Xorg (config_init+0xd) [0x55923763d6fd]
[ 233.173] (EE) 20: /usr/lib/xorg/Xorg (InitInput+0xc1) [0x559237620901]
[ 233.174] (EE) 21: /usr/lib/xorg/Xorg (InitFonts+0x36d) [0x5592375e3a6d]
[ 233.174] (EE) 22: /lib/x86_64-linux-gnu/libc.so.6 (__libc_init_first+0x90) [0x7f1c36e11fd0]
[ 233.174] (EE) 23: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0x7d) [0x7f1c36e1207d]
[ 233.174] (EE) 24: /usr/lib/xorg/Xorg (_start+0x2e) [0x5592375ccf0e]
[ 233.174] (EE)
[ 233.174] (EE) Segmentation fault at address 0x0
[ 233.174] (EE)
Fatal server error:
[ 233.174] (EE) Caught signal 11 (Segmentation fault). Server aborting
[ 233.174] (EE)
[ 233.174] (EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
[ 233.174] (EE) Please also check the log file at "/home/ubuntu/.local/share/xorg/Xorg.0.log" for additional information.
[ 233.174] (EE)
[ 233.174] (II) AIGLX: Suspending AIGLX clients for VT switch
[ 233.178] (EE) Server terminated with error (1). Closing log file.
Of course this could be unrelated to the %
sign but I thought it was interesting and possibly related