Bug 66133 - event_test blocks waiting for frame callback
Summary: event_test blocks waiting for frame callback
Status: VERIFIED FIXED
Alias: None
Product: Wayland
Classification: Unclassified
Component: weston (show other bugs)
Version: unspecified
Hardware: Other All
: medium critical
Assignee: Wayland bug list
QA Contact:
URL:
Whiteboard:
Keywords:
: 61296 (view as bug list)
Depends on:
Blocks: 61296
  Show dependency treegraph
 
Reported: 2013-06-24 19:48 UTC by U. Artie Eoff
Modified: 2013-12-06 16:19 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
event-test blocked gdb backtrace (2.92 KB, text/plain)
2013-06-24 19:48 UTC, U. Artie Eoff
Details
weston_log/printf debugging (16.20 KB, text/plain)
2013-07-10 00:20 UTC, U. Artie Eoff
Details

Description U. Artie Eoff 2013-06-24 19:48:41 UTC
Created attachment 81359 [details]
event-test blocked gdb backtrace

Weston's event-test blocks indefinitely in frame_callback_wait() thus preventing "make check" from finishing.

See the following gdb backtrace for event-test stack.

wayland (master) heads/master-0-g3af748b
drm (master) heads/master-0-ga0178c0
mesa (master) heads/master-0-ge5bf19a
libxkbcommon (master) heads/master-0-g6f06eb5
pixman (master) heads/master-0-g279bdcd
cairo (master) heads/master-0-g4d94391
weston (master) heads/master-0-g6bd6294
Comment 1 U. Artie Eoff 2013-06-26 17:56:45 UTC
FWIW, this is happening when moving the surface back into the output after it was entirely moved outside of the output.
Comment 2 U. Artie Eoff 2013-06-27 04:13:48 UTC
http://cgit.freedesktop.org/wayland/weston/commit/?id=5281fb1500b1ac430bde54426f85319e316c82e3 is the commit that changed the behavior.  If I revert that commit, event-test no longer hangs.

Before commit 5281fb15, the animation was masking this bug.  That is, event-test:test_surface_output was dependent on the weston_surface_animation_frame() which called weston_compositor_schedule_repaint().  In turn, that triggered a surface frame callback that allowed event-test:test_surface_output to continue execution.

Now that the animation is fixed, event-test:test_surface_output exposes the bug described in comment #1.
Comment 3 U. Artie Eoff 2013-07-10 00:20:27 UTC
Created attachment 82248 [details]
weston_log/printf debugging

Hope this helps since some of you cannot reproduce this.

Note: animations need to be disabled in weston.ini and run the test on x11 backend without moving the mouse.
Comment 5 U. Artie Eoff 2013-07-11 21:33:51 UTC
Strange, I don't see this problem when running weston/wayland on stable dependencies:

wayland (HEAD) 1.1.91-0-g3f3671e
drm (HEAD) libdrm-2.4.45-0-g63aeae1
mesa (9.1) heads/9.1-0-g26f802d
libxkbcommon (HEAD) xkbcommon-0.3.0-0-g27a1176
pixman (HEAD) pixman-0.30.0-0-g41daf50
cairo (HEAD) 1.12.14-0-g0dac37c
weston (HEAD) 1.1.91-0-g46cb4a9

That is, keeping wayland and weston equal and moving all other pieces to 'master' branches causes this issue to arise.  Perhaps some deeper issue is at fault.
Comment 6 U. Artie Eoff 2013-07-11 22:28:26 UTC
(In reply to comment #5)
> Strange, I don't see this problem when running weston/wayland on stable
> dependencies:
> 

Scratch that last comment... that is not the variant.
Comment 7 U. Artie Eoff 2013-07-11 22:40:02 UTC
bullseye
Comment 8 Rob Bradford 2013-08-15 16:50:06 UTC
*** Bug 61296 has been marked as a duplicate of this bug. ***
Comment 9 Kristian Høgsberg 2013-11-14 07:04:43 UTC
commit ace0a3920e791733211178f83f88bc5c52887042
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Nov 13 21:55:57 2013 -0800

    weston-test: Always update transform when moving surface
    
    weston_view_update_transform() will post damage in the old and new
    positions of the view and thus make sure we always repaint properly.
    In particular, in bug 66133, the test suite moves the surface off
    any output and weston_surface_schedule_repaint() in commit fails to
    do anything, since the surface is not on any output.
    
    After changing view geometry, we have to either call
    weston_compositor_schedule_repaint(), which is what shell.c typically
    does, though that repaints all outputs, or call
    weston_view_update_transform() to force update the transformation
    and queue repaints on affected outputs.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=66133


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.