Bug 66198 - received signal SIGSEGV on weston_surface_from_global_float()
Summary: received signal SIGSEGV on weston_surface_from_global_float()
Status: VERIFIED FIXED
Alias: None
Product: Wayland
Classification: Unclassified
Component: weston (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Wayland bug list
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-06-26 08:49 UTC by Samuel Iglesias Gonsálvez
Modified: 2013-07-09 17:59 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
GDB output (2.06 KB, text/plain)
2013-06-26 08:49 UTC, Samuel Iglesias Gonsálvez
Details
Workaround patch (doesn't fix the source of the corruption) (1.28 KB, patch)
2013-06-26 08:50 UTC, Samuel Iglesias Gonsálvez
Details | Splinter Review

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.