Bug 105370

Summary: Dragging the palm across touchpad crashes : Assertion `tp->tap.nfingers_down >= 1' failed.
Product: Wayland Reporter: quantumphoton007
Component: libinputAssignee: Wayland bug list <wayland-bugs>
Status: RESOLVED FIXED QA Contact:
Severity: major    
Priority: high CC: peter.hutterer, quantumphoton007
Version: unspecified   
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: Stacktrace of crash
evemu log (during crash)

Description quantumphoton007 2018-03-06 16:43:14 UTC
Created attachment 137829 [details]
Stacktrace of crash

I dragged my palm across the touchpad and X crashed. I have attached what X printed as `err.log`. Simply stating, `../libinput-1.10.1/src/evdev-mt-touchpad-tap.c:1028: tp_tap_handle_state: Assertion `tp->tap.nfingers_down >= 1' failed`. 

The weird thing is, when I `modprobe psmouse synaptics_intertouch=1`, this crash doesn't occur however weird I try dragging my palm across the touchpad. But on unloading and `modprobe psmouse synaptics_intertouch=0` and then dragging my palm across, this crash happens.

$ udevadm info /sys/class/input/event16
P: /devices/rmi4-00/input/input18/event16
N: input/event16
E: DEVNAME=/dev/input/event16
E: DEVPATH=/devices/rmi4-00/input/input18/event16
E: ID_BUS=rmi
E: ID_INPUT=1
E: ID_INPUT_HEIGHT_MM=53
E: ID_INPUT_TOUCHPAD=1
E: ID_INPUT_TOUCHPAD_INTEGRATION=internal
E: ID_INPUT_WIDTH_MM=98
E: ID_SERIAL=noserial
E: LIBINPUT_DEVICE_GROUP=1d/6cb/0:rmi4-00
E: MAJOR=13
E: MINOR=80
E: SUBSYSTEM=input
E: USEC_INITIALIZED=15414239

$ libinput --version
1.10.1

Vendor : Dell Inspiron 3537
$ cat /sys/class/dmi/id/modalias 
dmi:bvnDellInc.:bvrA09:bd08/25/2016:svnDellInc.:pnInspiron3537:pvrA09:rvnDellInc.:rn:rvr:cvnDellInc.:ct8:cvrA09:

Physical Dimension of touchpad (the actual area, without including buttons)
Width = 10.8 cm
Height = 6.1 cm

The touchpad has two physical buttons (L, R)
Comment 1 quantumphoton007 2018-03-06 16:49:22 UTC
Created attachment 137830 [details]
evemu log (during crash)
Comment 2 quantumphoton007 2018-03-06 16:51:58 UTC
For a newbie, how would I go about patching this issue? What steps do you usually follow with the log and evemu log?
Comment 3 quantumphoton007 2018-03-06 17:12:28 UTC
I believe this commit adds the assertion - 01a633b6ebea514cc26bb00f2bf85789fe5409e3
Comment 4 Peter Hutterer 2018-03-07 00:38:52 UTC
Looks like a dupe of bug 105258. There's still a bug warning replaying this but it doesn't crash after 440d94be57.

> Physical Dimension of touchpad (the actual area, without including buttons)
> Width = 10.8 cm
> Height = 6.1 cm

please run the touchpad-edge-detector, this needs to be fixed in a hwdb entry.

> For a newbie, how would I go about patching this issue? What steps do you 
> usually follow with the log and evemu log?

basically: 
in one terminal: sudo evemu-play evemu.log file
in the other terminal: sudo ./build/libinput-debug-events --enalbe-tap

hit enter for evemu-play, watch libinput crash, warn, or sail along smoothly. If the former, run in gdb to get an idea of what the context is (if needed, in this case it's easy enough).

Isolate the event sequence that triggers the crash (where needed/possible). Then stare at the evemu log long enough until it's clear why the crash happens. Write a test case for libinput, then keep failing that until the bug is fixed or a goat needs to be sacrificed [1], whichever happens earlier.


[1] no animals were harmed in the making of this software

*** This bug has been marked as a duplicate of bug 105258 ***
Comment 5 Peter Hutterer 2018-03-07 01:28:30 UTC
This one fixes the bug warning:

commit 2ab233857d42d942eb322888e2d87ba3b7f7b264
Author: Peter Hutterer <>
Date:   Wed Mar 7 10:58:17 2018 +1000

     touchpad: handle a palm down in the tapped state
Comment 6 quantumphoton007 2018-03-07 02:57:39 UTC
(In reply to Peter Hutterer from comment #4)
> Looks like a dupe of bug 105258. There's still a bug warning replaying this
> but it doesn't crash after 440d94be57.
> 
> > Physical Dimension of touchpad (the actual area, without including buttons)
> > Width = 10.8 cm
> > Height = 6.1 cm
> 
> please run the touchpad-edge-detector, this needs to be fixed in a hwdb
> entry.
> 

$ touchpad-edge-detector 108x61 /dev/input/event16
Touchpad Synaptics TM2382-001 on /dev/input/event16
Move one finger around the touchpad to detect the actual edges
Kernel says:	x [0..2560], y [0..2048]
Touchpad sends:	x [0..2560], y [0..2048]
Comment 7 Peter Hutterer 2018-03-07 03:02:42 UTC
I need the full output please, you cut off exactly the bits we need :)
Comment 8 quantumphoton007 2018-03-07 03:06:04 UTC
Hi,
Apologies :). I didn't think the command would spit more output on Ctrl+C.


Touchpad size as listed by the kernel: 98x53mm
User-specified touchpad size: 108x61mm
Calculated ranges: 2560/2048

Suggested udev rule:
# Dell Inspiron 3537
evdev:name:Synaptics TM2382-001:dmi:bvnDellInc.:bvrA09:bd08/25/2016:svnDellInc.:pnInspiron3537:pvrA09:rvnDellInc.:rn:rvr:cvnDellInc.:ct8:cvrA09:*
 EVDEV_ABS_00=0:2560:24
 EVDEV_ABS_01=0:2048:34
 EVDEV_ABS_35=0:2560:24
 EVDEV_ABS_36=0:2048:34
Comment 9 Peter Hutterer 2018-03-07 04:22:10 UTC
the edge detector shows the device as Synaptics TM2382-001 but the evemu log shows it as "SynPS/2 Synaptics TouchPad". did you update your kernel since that you now have the RMI4 device?
Comment 10 quantumphoton007 2018-03-07 07:52:27 UTC
Sorry for the confusion. The one with synaptics_intertouch=0 crashes, but the other one doesn't.

$ sudo modprobe -r psmouse; sudo modprobe psmouse synaptics_intertouch=0
$ touchpad-edge-detector 108x61 /dev/input/event16
Touchpad SynPS/2 Synaptics TouchPad on /dev/input/event16
Move one finger around the touchpad to detect the actual edges
Kernel says:	x [1268..5674], y [1098..4754]
Touchpad sends:	x [1268..5675], y [1101..4792] 

Touchpad size as listed by the kernel: 100x53mm
User-specified touchpad size: 108x61mm
Calculated ranges: 4407/3691

Suggested udev rule:
# Dell Inspiron 3537
evdev:name:SynPS/2 Synaptics TouchPad:dmi:bvnDellInc.:bvrA09:bd08/25/2016:svnDellInc.:pnInspiron3537:pvrA09:rvnDellInc.:rn:rvr:cvnDellInc.:ct8:cvrA09:*
 EVDEV_ABS_00=1268:5675:41
 EVDEV_ABS_01=1101:4792:61
 EVDEV_ABS_35=1268:5675:41
 EVDEV_ABS_36=1101:4792:61

-----------------------------------------------------------------------

$ sudo modprobe -r psmouse; sudo modprobe psmouse synaptics_intertouch=1
$ touchpad-edge-detector 108x61 /dev/input/event16
Touchpad Synaptics TM2382-001 on /dev/input/event16
Move one finger around the touchpad to detect the actual edges
Kernel says:	x [0..2560], y [0..2048]
Touchpad sends:	x [0..2560], y [0..2048] 

Touchpad size as listed by the kernel: 98x53mm
User-specified touchpad size: 108x61mm
Calculated ranges: 2560/2048

Suggested udev rule:
# Dell Inspiron 3537
evdev:name:Synaptics TM2382-001:dmi:bvnDellInc.:bvrA09:bd08/25/2016:svnDellInc.:pnInspiron3537:pvrA09:rvnDellInc.:rn:rvr:cvnDellInc.:ct8:cvrA09:*
 EVDEV_ABS_00=0:2560:24
 EVDEV_ABS_01=0:2048:34
 EVDEV_ABS_35=0:2560:24
 EVDEV_ABS_36=0:2048:34
Comment 11 Peter Hutterer 2018-03-07 23:55:16 UTC
PR submitted to systemd, please give this a test though to make sure I didn't add any typos: https://github.com/systemd/systemd/pull/8388

Thanks
Comment 12 Zbigniew Jedrzejewski-Szmek 2018-03-08 07:42:51 UTC
https://github.com/systemd/systemd/pull/8388 was merged. Please test.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.