Bug 72404 - Weston infinite loop, 100% CPU when client preview activated during fullscreen
Summary: Weston infinite loop, 100% CPU when client preview activated during fullscreen
Alias: None
Product: Wayland
Classification: Unclassified
Component: weston (show other bugs)
Version: unspecified
Hardware: Other All
: medium critical
Assignee: Wayland bug list
QA Contact:
: 72856 (view as bug list)
Depends on:
Reported: 2013-12-06 16:36 UTC by U. Artie Eoff
Modified: 2014-01-08 18:26 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Description U. Artie Eoff 2013-12-06 16:36:18 UTC
Weston allows user to preview running clients by pressing and releasing the <mod> key.  If a client is in fullscreen mode, then attempting to activate preview mode causes Weston to lock-up.

1. Execute weston-terminal
2. Make weston-terminal fullscreen (<F11>)
3. Activate client previews by pressing and releasing the <mod> key (windows key in my case)
4. Observe Weston locks-up and can't vt-switch.  SSH sessions still work and weston can be killed via ssh.

wayland (master) heads/master-0-g1521c62
drm (master) libdrm-2.4.50-0-g4c5de72
mesa (master) heads/master-0-g453651e
libva (master) heads/master-0-g73a11b3
intel-driver (master) heads/master-0-g9d0bd94
weston (master) heads/master-0-gc8f8dd8
Comment 1 U. Artie Eoff 2013-12-06 16:48:06 UTC
This can be reproduced on desktop-shell running on x11 and drm backends.  Weston actually ends up hogging 100% CPU and starts allocating huge amounts of memory until it runs out.
Comment 2 U. Artie Eoff 2013-12-19 15:02:06 UTC
*** Bug 72856 has been marked as a duplicate of this bug. ***
Comment 3 Emilio Pozuelo Monfort 2014-01-07 15:41:57 UTC
I've sent a patch to the ml.
Comment 4 Kristian Høgsberg 2014-01-08 05:52:47 UTC
commit e6bbe5a90d1ea91624ebdbdb7abdc7a1bbe9829d
Author: Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>
Date:   Tue Jan 7 16:41:39 2014 +0100

    exposay: fix infinite loop with fullscreen surfaces
    We were calling exposay_highlight_surface() inside a wl_list_for_each
    loop for a layer, but exposay_highlight_surface() calls activate()
    which calls shell_surface_update_layer(), which removes the surface
    from its layer and reinserts it, causing an infinite loop.
    Call exposay_highlight_surface() outside the for_each to avoid this.

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.