Bug 77341

Summary: SIGSEGV in handle_touch_with_coords
Product: Wayland Reporter: Anu Reddy <anasuyax.r.nannuri>
Component: libinputAssignee: Wayland bug list <wayland-bugs>
Status: VERIFIED FIXED QA Contact:
Severity: critical    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: gdb_backtrace

Description Anu Reddy 2014-04-11 19:32:12 UTC
Weston crashes when it cannot find the touch device output. See attached gdb_backtrace for more info. There are different ways to reproduce this bug.

1st method to reproduce:
======================
1. Identify two displays as display1 and display2 
2. Display2 is a touch device
3. Disconnect display2 monitor (touch is still working)
4. Execute weston-launch
5. Touch display2 screen. Observe weston crash.


2nd method to reproduce:
======================
1. Create a udev mapping rule in /etc/udev/rules.d/weston.rules with wrong display name. 
   
   Example:   
   ENV{ID_VENDER_ID}=="2149", ENV{ID_MODEL_ID}=="2122", ENV{WL_OUTPUT}="HDMI3"
   (Here instead of VGA1, I gave incorrect display name)

2. Unplug and Replug USB touch device to apply new udev rules. 
3. Start Weston 
4. Touch the display. Observe weston crash.


Software Stack
==============
Kernel: 3.13.6-200.fc20.x86_64
Systemd: 212 (rawhide)
wayland (HEAD) 1.4.91-0-g5e2cfd2
drm (HEAD) libdrm-2.4.52-0-g46d451c
mesa (HEAD) mesa-10.1-0-g4a86465
libva (HEAD) libva-1.2.1-0-g88ed1eb
intel-driver (HEAD) 1.2.2-0-g121e70d
cairo (HEAD) heads/1.12-0-g59e2a93
libinput (HEAD) remotes/origin/HEAD-0-gc5c503c
weston (HEAD) 1.4.91-0-g79d5a6e
Comment 1 Anu Reddy 2014-04-11 19:34:44 UTC
Created attachment 97237 [details]
gdb_backtrace
Comment 2 U. Artie Eoff 2014-04-12 03:45:46 UTC
sent a patch to the list:

http://lists.freedesktop.org/archives/wayland-devel/2014-April/014204.html
Comment 4 Kristian Høgsberg 2014-04-21 21:37:36 UTC
commit 161c6c56944cdfbda9a1af7a8a2c34e8f7d41dae
Author: U. Artie Eoff <ullysses.a.eoff@intel.com>
Date:   Thu Apr 17 07:53:25 2014 -0700

    input: fix input device map to output if it doesn't exist.
    
    If an input device wants to map to an output that does not
    exist, then just map it to the first output.
    
    Also, if a device is mapped to an output that gets unplugged then
    it gets default mapped to the first output in the output destroy
    listener.  However, the original output destroy listener needs to
    be removed before adding the new listener for the first output,
    otherwise the list gets corrupted.
    
    Later if the other output is plugged back in, we remap the device
    to it.  In that case, we should remove the destroy listener for
    the first output.
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=77341
    
    Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>

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.