Bug 66198

Summary: received signal SIGSEGV on weston_surface_from_global_float()
Product: Wayland Reporter: Samuel Iglesias Gonsálvez <siglesias>
Component: westonAssignee: Wayland bug list <wayland-bugs>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: GDB output
Workaround patch (doesn't fix the source of the corruption)

Description Samuel Iglesias Gonsálvez 2013-06-26 08:49:16 UTC
Created attachment 81457 [details]
GDB output

Following the steps on https://bugs.freedesktop.org/show_bug.cgi?id=66167 I found a different issue.

Also, it's easier to reproduce if doing these steps:

1. Launch gtk3-demo
2. In the left panel (titled Widget), double-click the "Application window" demo from the list. 
3. On the toolbar, click on File and move to the right to show the rest of popup menus (File, Preferences, Help) and to then to the left several times.
4. Observe how Weston receives a SIGSEGV.


Apparently, compositor->surface_list is corrupted (see the attached GDB output). A workaround patch is attached to this bug report.
Comment 1 Samuel Iglesias Gonsálvez 2013-06-26 08:50:25 UTC
Created attachment 81458 [details] [review]
Workaround patch (doesn't fix the source of the corruption)

Workaround patch to avoid the issue.
Comment 2 Rob Bradford 2013-07-08 10:47:35 UTC
commit 27b1793857953927f842065a57cb5821a86bc671
Author: Rob Bradford <rob@linux.intel.com>
Date:   Wed Jun 26 18:08:46 2013 +0100

    compositor: rebuild the global list if we've removed a surface from it
    
    The list of surfaces used by weston_compositor_pick_surface() is
    maintained in list of surfaces stored on the compositor. This list is
    generated from the surfaces across all the layers using
    weston_compositor_build_surface_list.
    
    When destroying a surface the surface is "unmapped" with
    weston_surface_unmap which removes it from the layer list. However since
    the compositor surface list was only being rebuilt when the output was
    repainted a call to weston_compositor_pick_surface before the next
    output repaint would use an outdated surface list containing surfaces
    that have been partially destroyed.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=65986
    https://bugs.freedesktop.org/show_bug.cgi?id=66173
    https://bugs.freedesktop.org/show_bug.cgi?id=66198

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.