I experienced the same bug on my Thinkpad, which has an Intel video card. So at least we know it's not a driver issue.
This time I could get a stacktrace from gdb:
#0 0x00007ffff733bb03 in poll () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007ffff5247862 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1 #2 0x00007ffff5248d5f in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1 #3 0x00007ffff5248f7b in xcb_wait_for_reply () from /usr/lib/x86_64-linux-gnu/libxcb.so.1 #4 0x00007ffff6d4209d in _XReply () from /usr/lib/x86_64-linux-gnu/libX11.so.6 #5 0x00007fffeb578841 in DRI2GetBuffersWithFormat (dpy=0x6176b0, drawable=98, width=0x6a5288, height=0x6a528c, attachments=0x400e8b0, count=4, outCount=0x7fffffffd24c) at dri2.c:470 #6 0x00007fffeb57648c in dri2GetBuffersWithFormat (driDrawable=<optimized out>, width=0x6a5288, height=0x6a528c, attachments=<optimized out>, count=<optimized out>, out_count=0x7fffffffd24c, loaderPrivate=0x6a5180) at dri2_glx.c:771 #7 0x00007fffeaa34c3c in intel_query_dri2_buffers_with_separate_stencil (count=0x7fffffffd24c, attachments=<synthetic pointer>, buffers=<synthetic pointer>, drawable=0x6a5260, intel=0x7ffff7fd0040) at intel_context.c:1183 #8 intel_update_renderbuffers (context=<optimized out>, drawable=0x6a5260) at intel_context.c:304 #9 0x00007fffeaa358e2 in intel_prepare_render (intel=<optimized out>) at intel_context.c:396 #10 0x00007fffeaa4f2a6 in brw_try_draw_prims (max_index=3, min_index=0, ib=0x0, nr_prims=1, prim=0x70c5ac, arrays=0x70e018, ctx=0x7ffff7fd0040) at brw_draw.c:449 #11 brw_draw_prims (ctx=0x7ffff7fd0040, arrays=0x70e018, prim=0x70c5ac, nr_prims=1, ib=0x0, index_bounds_valid=<optimized out>, min_index=0, max_index=3, tfb_vertcount=0x0) at brw_draw.c:566 #12 0x00007fffea6bf078 in vbo_exec_vtx_flush (exec=0x70bd70, keepUnmapped=1 '\001') at vbo/vbo_exec_draw.c:407 #13 0x00007fffea6b434c in vbo_exec_FlushVertices_internal (exec=0x70bd70, unmap=<optimized out>) at vbo/vbo_exec_api.c:444 #14 0x00007fffea6bcdec in vbo_exec_FlushVertices (ctx=0x7ffff7fd0040, flags=<optimized out>) at vbo/vbo_exec_api.c:1195 #15 0x00007fffea68219e in _mesa_BindTexture (target=3553, texName=0) at main/texobj.c:1123 #16 0x00007fffeb7c2242 in GLTexture::disable() () from /usr/lib/compiz/libopengl.so #17 0x00007fffe29f27ae in unity::UnityScreen::paintPanelShadow(GLMatrix const&) () from /usr/lib/compiz/libunityshell.so #18 0x00007fffe29fd7aa in unity::UnityWindow::glDraw(GLMatrix const&, GLFragment::Attrib&, CompRegion const&, unsigned int) () from /usr/lib/compiz/libunityshell.so #19 0x00007fffeb7ab28a in GLWindow::glDraw(GLMatrix const&, GLFragment::Attrib&, CompRegion const&, unsigned int) () from /usr/lib/compiz/libopengl.so #20 0x00007fffeb7ab6a4 in GLWindow::glPaint(GLWindowPaintAttrib const&, GLMatrix const&, CompRegion const&, unsigned int) () from /usr/lib/compiz/libopengl.so #21 0x00007fffe2dd91d8 in WallWindow::glPaint(GLWindowPaintAttrib const&, GLMatrix const&, CompRegion const&, unsigned int) () from /usr/lib/compiz/libwall.so #22 0x00007fffeb7ab64c in GLWindow::glPaint(GLWindowPaintAttrib const&, GLMatrix const&, CompRegion const&, unsigned int) () from /usr/lib/compiz/libopengl.so #23 0x00007fffe29f3911 in unity::UnityWindow::glPaint(GLWindowPaintAttrib const&, GLMatrix const&, CompRegion const&, unsigned int) () from /usr/lib/compiz/libunityshell.so #24 0x00007fffeb7ab64c in GLWindow::glPaint(GLWindowPaintAttrib const&, GLMatrix const&, CompRegion const&, unsigned int) () from /usr/lib/compiz/libopengl.so #25 0x00007fffeb7abb79 in PrivateGLScreen::paintOutputRegion(GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () from /usr/lib/compiz/libopengl.so #26 0x00007fffeb7ac047 in GLScreen::glPaintOutput(GLScreenPaintAttrib const&, GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () from /usr/lib/compiz/libopengl.so #27 0x00007fffeb7abf79 in GLScreen::glPaintOutput(GLScreenPaintAttrib const&, GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () from /usr/lib/compiz/libopengl.so #28 0x00007fffe2dd2a0f in WallScreen::glPaintOutput(GLScreenPaintAttrib const&, GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () from /usr/lib/compiz/libwall.so #29 0x00007fffeb7abf79 in GLScreen::glPaintOutput(GLScreenPaintAttrib const&, GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () from /usr/lib/compiz/libopengl.so #30 0x00007fffe29fd97e in unity::UnityScreen::glPaintOutput(GLScreenPaintAttrib const&, GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () from /usr/lib/compiz/libunityshell.so #31 0x00007fffeb7abf79 in GLScreen::glPaintOutput(GLScreenPaintAttrib const&, GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () from /usr/lib/compiz/libopengl.so #32 0x00007fffeb7bbfaf in PrivateGLScreen::paintOutputs(std::list<CompOutput*, std::allocator<CompOutput*> >&, unsigned int, CompRegion const&) () from /usr/lib/compiz/libopengl.so #33 0x00007fffebde92b3 in CompositeScreen::paint(std::list<CompOutput*, std::allocator<CompOutput*> >&, unsigned int) () from /usr/lib/compiz/libcomposite.so #34 0x00007fffebdeabc7 in CompositeScreen::handlePaintTimeout() () from /usr/lib/compiz/libcomposite.so #35 0x00007ffff7ba1e5b in CompTimer::triggerCallback() () from /usr/lib/libcompiz_core.so.ABI-20120305 #36 0x00007ffff7ba1f5f in CompTimeoutSource::callback() () from /usr/lib/libcompiz_core.so.ABI-20120305 #37 0x00007ffff7ba140d in CompTimeoutSource::dispatch(sigc::slot_base*) () from /usr/lib/libcompiz_core.so.ABI-20120305 #38 0x00007ffff60a2f2f in Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) () from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1 #39 0x00007ffff5baad53 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #40 0x00007ffff5bab0a0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #41 0x00007ffff5bab49a in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
Attaching strace reveals that compiz is calling poll() and recvfrom() on the X11 socket in a tight loop.
I experienced the same bug on my Thinkpad, which has an Intel video card. So at least we know it's not a driver issue.
This time I could get a stacktrace from gdb:
#0 0x00007ffff733bb03 in poll () from /lib/x86_ 64-linux- gnu/libc. so.6 x86_64- linux-gnu/ libxcb. so.1 x86_64- linux-gnu/ libxcb. so.1 x86_64- linux-gnu/ libxcb. so.1 x86_64- linux-gnu/ libX11. so.6 ithFormat (dpy=0x6176b0, drawable=98, width=0x6a5288, height=0x6a528c, attachments= 0x400e8b0, count=4, outCount= 0x7fffffffd24c) ithFormat (driDrawable= <optimized out>, width=0x6a5288, height=0x6a528c, attachments= <optimized out>, count=<optimized out>, count=0x7ffffff fd24c, loaderPrivate= 0x6a5180) at dri2_glx.c:771 dri2_buffers_ with_separate_ stencil (count= 0x7fffffffd24c, attachments= <synthetic pointer>, buffers=<synthetic pointer>, 0x6a5260, intel=0x7ffff7f d0040) at intel_context. c:1183 renderbuffers (context=<optimized out>, drawable=0x6a5260) at intel_context.c:304 render (intel=<optimized out>) at intel_context.c:396 0040, arrays=0x70e018, prim=0x70c5ac, nr_prims=1, ib=0x0, index_bounds_ valid=< optimized out>, min_index=0, max_index=3, vertcount= 0x0) at brw_draw.c:566 exec_draw. c:407 FlushVertices_ internal (exec=0x70bd70, unmap=<optimized out>) at vbo/vbo_ exec_api. c:444 FlushVertices (ctx=0x7ffff7fd 0040, flags=<optimized out>) at vbo/vbo_ exec_api. c:1195 :disable( ) () from /usr/lib/ compiz/ libopengl. so UnityScreen: :paintPanelShad ow(GLMatrix const&) () from /usr/lib/ compiz/ libunityshell. so UnityWindow: :glDraw( GLMatrix const&, GLFragment: :Attrib& , CompRegion const&, unsigned int) () from /usr/lib/ compiz/ libunityshell. so :glDraw( GLMatrix const&, GLFragment: :Attrib& , CompRegion const&, unsigned int) () from /usr/lib/ compiz/ libopengl. so :glPaint( GLWindowPaintAt trib const&, GLMatrix const&, CompRegion const&, unsigned int) () from /usr/lib/ compiz/ libopengl. so :glPaint( GLWindowPaintAt trib const&, GLMatrix const&, CompRegion const&, unsigned int) () from /usr/lib/ compiz/ libwall. so :glPaint( GLWindowPaintAt trib const&, GLMatrix const&, CompRegion const&, unsigned int) () from /usr/lib/ compiz/ libopengl. so UnityWindow: :glPaint( GLWindowPaintAt trib const&, GLMatrix const&, CompRegion const&, unsigned int) () compiz/ libunityshell. so :glPaint( GLWindowPaintAt trib const&, GLMatrix const&, CompRegion const&, unsigned int) () from /usr/lib/ compiz/ libopengl. so ::paintOutputRe gion(GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () from /usr/lib/ compiz/ libopengl. so :glPaintOutput( GLScreenPaintAt trib const&, GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () compiz/ libopengl. so :glPaintOutput( GLScreenPaintAt trib const&, GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () compiz/ libopengl. so :glPaintOutput( GLScreenPaintAt trib const&, GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () compiz/ libwall. so :glPaintOutput( GLScreenPaintAt trib const&, GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () compiz/ libopengl. so UnityScreen: :glPaintOutput( GLScreenPaintAt trib const&, GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () compiz/ libunityshell. so :glPaintOutput( GLScreenPaintAt trib const&, GLMatrix const&, CompRegion const&, CompOutput*, unsigned int) () compiz/ libopengl. so ::paintOutputs( std::list< CompOutput* , std::allocator< CompOutput* > >&, unsigned int, CompRegion const&) () compiz/ libopengl. so ::paint( std::list< CompOutput* , std::allocator< CompOutput* > >&, unsigned int) () from /usr/lib/ compiz/ libcomposite. so ::handlePaintTi meout() () from /usr/lib/ compiz/ libcomposite. so :triggerCallbac k() () from /usr/lib/ libcompiz_ core.so. ABI-20120305 ce::callback( ) () from /usr/lib/ libcompiz_ core.so. ABI-20120305 ce::dispatch( sigc::slot_ base*) () from /usr/lib/ libcompiz_ core.so. ABI-20120305 :dispatch_ vfunc(_ GSource* , int (*)(void*), void*) () from /usr/lib/ x86_64- linux-gnu/ libglibmm- 2.4.so. 1 context_ dispatch () from /lib/x86_ 64-linux- gnu/libglib- 2.0.so. 0 64-linux- gnu/libglib- 2.0.so. 0 64-linux- gnu/libglib- 2.0.so. 0
#1 0x00007ffff5247862 in ?? () from /usr/lib/
#2 0x00007ffff5248d5f in ?? () from /usr/lib/
#3 0x00007ffff5248f7b in xcb_wait_for_reply () from /usr/lib/
#4 0x00007ffff6d4209d in _XReply () from /usr/lib/
#5 0x00007fffeb578841 in DRI2GetBuffersW
at dri2.c:470
#6 0x00007fffeb57648c in dri2GetBuffersW
out_
#7 0x00007fffeaa34c3c in intel_query_
drawable=
#8 intel_update_
#9 0x00007fffeaa358e2 in intel_prepare_
#10 0x00007fffeaa4f2a6 in brw_try_draw_prims (max_index=3, min_index=0, ib=0x0, nr_prims=1, prim=0x70c5ac, arrays=0x70e018, ctx=0x7ffff7fd0040) at brw_draw.c:449
#11 brw_draw_prims (ctx=0x7ffff7fd
tfb_
#12 0x00007fffea6bf078 in vbo_exec_vtx_flush (exec=0x70bd70, keepUnmapped=1 '\001') at vbo/vbo_
#13 0x00007fffea6b434c in vbo_exec_
#14 0x00007fffea6bcdec in vbo_exec_
#15 0x00007fffea68219e in _mesa_BindTexture (target=3553, texName=0) at main/texobj.c:1123
#16 0x00007fffeb7c2242 in GLTexture:
#17 0x00007fffe29f27ae in unity::
#18 0x00007fffe29fd7aa in unity::
#19 0x00007fffeb7ab28a in GLWindow:
#20 0x00007fffeb7ab6a4 in GLWindow:
#21 0x00007fffe2dd91d8 in WallWindow:
#22 0x00007fffeb7ab64c in GLWindow:
#23 0x00007fffe29f3911 in unity::
from /usr/lib/
#24 0x00007fffeb7ab64c in GLWindow:
#25 0x00007fffeb7abb79 in PrivateGLScreen
#26 0x00007fffeb7ac047 in GLScreen:
from /usr/lib/
#27 0x00007fffeb7abf79 in GLScreen:
from /usr/lib/
#28 0x00007fffe2dd2a0f in WallScreen:
from /usr/lib/
#29 0x00007fffeb7abf79 in GLScreen:
from /usr/lib/
#30 0x00007fffe29fd97e in unity::
from /usr/lib/
#31 0x00007fffeb7abf79 in GLScreen:
from /usr/lib/
#32 0x00007fffeb7bbfaf in PrivateGLScreen
from /usr/lib/
#33 0x00007fffebde92b3 in CompositeScreen
#34 0x00007fffebdeabc7 in CompositeScreen
#35 0x00007ffff7ba1e5b in CompTimer:
#36 0x00007ffff7ba1f5f in CompTimeoutSour
#37 0x00007ffff7ba140d in CompTimeoutSour
#38 0x00007ffff60a2f2f in Glib::Source:
#39 0x00007ffff5baad53 in g_main_
#40 0x00007ffff5bab0a0 in ?? () from /lib/x86_
#41 0x00007ffff5bab49a in g_main_loop_run () from /lib/x86_
Attaching strace reveals that compiz is calling poll() and recvfrom() on the X11 socket in a tight loop.