Summary: | glxgears stops rendering randomly under xwayland with dri3 & glamor | ||
---|---|---|---|
Product: | Wayland | Reporter: | Boyan Ding <stu_dby> |
Component: | XWayland | Assignee: | Wayland bug list <wayland-bugs> |
Status: | RESOLVED NOTOURBUG | QA Contact: | Xorg Project Team <xorg-team> |
Severity: | normal | ||
Priority: | medium | ||
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: |
Description
Boyan Ding
2014-07-06 01:37:19 UTC
I built a glxgears with debug symbols and used gdb, I discovered pressing 'a' several times (to pause and restart animation) can effectively trigger the halt, and the stack trace when it is halted is always as below (sorry I used heavily optimized and stripped binaries, I am too lazy to build them myself): #0 0x00007ffff70cd800 in __poll_nocancel () from /usr/lib/libc.so.6 #1 0x00007ffff5626992 in ?? () from /usr/lib/libxcb.so.1 #2 0x00007ffff5627dc9 in xcb_wait_for_special_event () from /usr/lib/libxcb.so.1 #3 0x00007ffff7bb9244 in ?? () from /usr/lib/libGL.so.1 #4 0x00007ffff7bb9845 in ?? () from /usr/lib/libGL.so.1 #5 0x00007ffff7bba235 in ?? () from /usr/lib/libGL.so.1 #6 0x00007ffff36378b7 in ?? () from /usr/lib/xorg/modules/dri/i965_dri.so #7 0x00007ffff3637be5 in ?? () from /usr/lib/xorg/modules/dri/i965_dri.so #8 0x00007ffff362c71d in ?? () from /usr/lib/xorg/modules/dri/i965_dri.so #9 0x00000000004027fa in draw () at gears.c:183 #10 0x00007ffff76c1ac4 in ?? () from /usr/lib/libglut.so.3 #11 0x00007ffff76c5329 in fgEnumWindows () from /usr/lib/libglut.so.3 #12 0x00007ffff76c207d in glutMainLoopEvent () from /usr/lib/libglut.so.3 #13 0x00007ffff76c28e5 in glutMainLoop () from /usr/lib/libglut.so.3 #14 0x00000000004031af in main (argc=1, argv=0x7fffffffeb78) at gears.c:405 line 183 at draw() is: glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); I guess it has something to do with dri3. Finally built mesa (10.2.3) myself with debug symbols and backtrace is as below: #0 0x00007ffff70bd800 in __poll_nocancel () from /usr/lib/libc.so.6 #1 0x00007ffff55fc992 in ?? () from /usr/lib/libxcb.so.1 #2 0x00007ffff55fddc9 in xcb_wait_for_special_event () from /usr/lib/libxcb.so.1 #3 0x00007ffff7bbc495 in dri3_find_back (c=0x605790, priv=0xa346e0) at dri3_glx.c:1103 #4 0x00007ffff7bbc51b in dri3_get_buffer (driDrawable=0x6a48e0, format=4107, buffer_type=dri3_buffer_back, loaderPrivate=0xa346e0) at dri3_glx.c:1127 #5 0x00007ffff7bbc92e in dri3_get_buffers (driDrawable=0x6a48e0, format=4107, stamp=0x6a4910, loaderPrivate=0xa346e0, buffer_mask=1, buffers=0x7fffffffe640) at dri3_glx.c:1274 #6 0x00007ffff3563c10 in intel_update_image_buffers (brw=0x7ffff7fd4040, drawable=0x6a48e0) at brw_context.c:1395 #7 0x00007ffff3563436 in intel_update_renderbuffers (context=0x6a4020, drawable=0x6a48e0) at brw_context.c:1087 #8 0x00007ffff35634cd in intel_prepare_render (brw=0x7ffff7fd4040) at brw_context.c:1108 #9 0x00007ffff3556969 in brw_clear (ctx=0x7ffff7fd4040, mask=18) at brw_clear.c:234 #10 0x00007ffff31b875e in _mesa_Clear (mask=16640) at main/clear.c:226 #11 0x00000000004027fa in draw () at gears.c:183 #12 0x00007ffff76b1ac4 in ?? () from /usr/lib/libglut.so.3 #13 0x00007ffff76b5329 in fgEnumWindows () from /usr/lib/libglut.so.3 #14 0x00007ffff76b207d in glutMainLoopEvent () from /usr/lib/libglut.so.3 #15 0x00007ffff76b28e5 in glutMainLoop () from /usr/lib/libglut.so.3 #16 0x00000000004031af in main (argc=1, argv=0x7fffffffeb78) at gears.c:405 Seems that it halts in waiting for back buffers. It's the bug of libxcb 1.10 Fixed in http://cgit.freedesktop.org/xcb/libxcb/commit/?id=3b72a2c9d1d656c74c691a45689e1d637f669e3a |
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.