Touching on multiple touchscreens simultaneously breaks X11
Suppose you have two different touch devices connected to the same screen on one computer. Then if you do the following:
- touch first touchscreen with one finger and keep holding it down
- touch second touchscreen with a finger
the first screen loses all touches and goes unresponsive. The following is printed to the log:
[471.284] (EE) [dix] Zytronic Displays Limited ZXY150 Controller: unable to find touch point 165
The second screen continues working.
This happens on Debian stable as well as Ubuntu 18/04 and latest Fedora live image. This only affects X11, Wayland works. Debian was tested both with the version that came with Stretch as well as the latest libinput version from backports.
If you change the X server to use evdev instead of libinput, this crash does not happen. Thus filing this against libinput although it could theoretically also be in X.
The hardware used were Zytronics 500 and a Zytronics 150 but the issue also happens with a Zytronics + Elo touch combination.
Info on the first device:
udevadm info /sys/class/input/event12
P: /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3.3/2-1.3.3:1.0/0003:14C8:0016.0003/input/input16/event12
N: input/event12
S: input/by-id/usb-Zytronic_Displays_Limited_ZXY500_Controller_45002C000A51373032353739-event-if00
S: input/by-path/pci-0000:00:1d.0-usb-0:1.3.3:1.0-event
E: DEVLINKS=/dev/input/by-id/usb-Zytronic_Displays_Limited_ZXY500_Controller_45002C000A51373032353739-event-if00 /dev/input/by-path/pci-0000:00:1d.0-usb-0:1.3.3:1.0-event
E: DEVNAME=/dev/input/event12
E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3.3/2-1.3.3:1.0/0003:14C8:0016.0003/input/input16/event12
E: ID_BUS=usb
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_MODEL=ZXY500_Controller
E: ID_MODEL_ENC=ZXY500\x20Controller
E: ID_MODEL_ID=0016
E: ID_PATH=pci-0000:00:1d.0-usb-0:1.3.3:1.0
E: ID_PATH_TAG=pci-0000_00_1d_0-usb-0_1_3_3_1_0
E: ID_REVISION=0200
E: ID_SERIAL=Zytronic_Displays_Limited_ZXY500_Controller_45002C000A51373032353739
E: ID_SERIAL_SHORT=45002C000A51373032353739
E: ID_TYPE=hid
E: ID_USB_DRIVER=usbhid
E: ID_USB_INTERFACES=:030101:030000:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Zytronic_Displays_Limited
E: ID_VENDOR_ENC=Zytronic\x20Displays\x20Limited
E: ID_VENDOR_ID=14c8
E: LIBINPUT_DEVICE_GROUP=3/14c8/16/111:usb-0000:00:1d.0-1.3
E: MAJOR=13
E: MINOR=76
E: SUBSYSTEM=input
E: USEC_INITIALIZED=7976829
and the second device:
P: /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/0003:14C8:0014.0001/input/input6/event3
N: input/event3
S: input/by-id/usb-Zytronic_Displays_Limited_ZXY150_Controller_320035000851373430353430-event-if00
S: input/by-path/pci-0000:00:1a.0-usb-0:1.2:1.0-event
E: DEVLINKS=/dev/input/by-path/pci-0000:00:1a.0-usb-0:1.2:1.0-event /dev/input/by-id/usb-Zytronic_Displays_Limited_ZXY150_Controller_320035000851373430353430-event-if00
E: DEVNAME=/dev/input/event3
E: DEVPATH=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/0003:14C8:0014.0001/input/input6/event3
E: ID_BUS=usb
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_MODEL=ZXY150_Controller
E: ID_MODEL_ENC=ZXY150\x20Controller
E: ID_MODEL_ID=0014
E: ID_PATH=pci-0000:00:1a.0-usb-0:1.2:1.0
E: ID_PATH_TAG=pci-0000_00_1a_0-usb-0_1_2_1_0
E: ID_REVISION=0200
E: ID_SERIAL=Zytronic_Displays_Limited_ZXY150_Controller_320035000851373430353430
E: ID_SERIAL_SHORT=320035000851373430353430
E: ID_TYPE=hid
E: ID_USB_DRIVER=usbhid
E: ID_USB_INTERFACES=:030000:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Zytronic_Displays_Limited
E: ID_VENDOR_ENC=Zytronic\x20Displays\x20Limited
E: ID_VENDOR_ID=14c8
E: LIBINPUT_DEVICE_GROUP=3/14c8/14/111:usb-0000:00:1a.0-1
E: MAJOR=13
E: MINOR=67
E: SUBSYSTEM=input
E: USEC_INITIALIZED=7870716