Mir

Crashes in drmHandleEvent - possibly triggered by client submitting buffer too slowly?

Bug #1125852 reported by Chris Halse Rogers
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
Critical
Alexandros Frantzis

Bug Description

Using mir 0.0.2 & Xmir, mir will rapidly die once compiz starts - ie: shortly after logging in from unity-greeter. Unity-greeter itself appears to work fine.

This occurs on both intel & radeon.

/var/log/lightdm/mir.log
[II, GBMDisplay] Successfully setup native resources.
[II, GBMDisplay] Successfully made egl context current on construction.
[II, GBMDisplay] Successfully performed egl buffer swap on construction.
[II, GBMDisplay] Successfully performed drm mode setup on construction.
[II, GBMDisplay] Successfully finished construction.
[EE, GBMDisplay] Timeout while waiting for page-flip

Ginormous evil backtrace:
Program received signal SIGSEGV, Segmentation fault.
std::_Hashtable<unsigned int, std::pair<unsigned int const, mir::graphics::gbm::PageFlipEventData>, std::allocator<std::pair<unsigned int const, mir::graphics::gbm::PageFlipEventData> >, std::_Select1st<std::pair<unsigned int const, mir::graphics::gbm::PageFlipEventData> >, std::equal_to<unsigned int>, std::hash<unsigned int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, false, false, true>::erase (this=0x1c043f0, __k=@0x1bf9bd0: 4294967295)
    at /usr/include/c++/4.6/bits/hashtable.h:1097
1097 while (*__slot && !this->_M_compare(__k, __code, *__slot))
(gdb) bt
#0 std::_Hashtable<unsigned int, std::pair<unsigned int const, mir::graphics::gbm::PageFlipEventData>, std::allocator<std::pair<unsigned int const, mir::graphics::gbm::PageFlipEventData> >, std::_Select1st<std::pair<unsigned int const, mir::graphics::gbm::PageFlipEventData> >, std::equal_to<unsigned int>, std::hash<unsigned int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, false, false, true>::erase (this=0x1c043f0,
    __k=@0x1bf9bd0: 4294967295) at /usr/include/c++/4.6/bits/hashtable.h:1097
#1 0x00007f732c8a2873 in drmHandleEvent (fd=3,
    evctx=0x7f732def7ad0 <mir::graphics::gbm::KMSPageFlipper::wait_for_flip(unsigned int)::evctx>) at ../xf86drmMode.c:811
#2 0x00007f732dcca107 in mir::graphics::gbm::KMSPageFlipper::wait_for_flip (
    this=0x1a28230, crtc_id=10)
    at /build/buildd/mir-0.0.2/src/graphics/gbm/kms_page_flipper.cpp:155
#3 0x00007f732dcc80e9 in mir::graphics::gbm::KMSOutput::wait_for_page_flip (
    this=<optimised out>)
    at /build/buildd/mir-0.0.2/src/graphics/gbm/kms_output.cpp:168
#4 0x00007f732dcc61b4 in mir::graphics::gbm::GBMDisplayBuffer::schedule_and_wait_for_page_flip (this=0x1aa0770, bufobj=0x1b3b3d0)
    at /build/buildd/mir-0.0.2/src/graphics/gbm/gbm_display_buffer.cpp:263
#5 0x00007f732dcc622b in post_update (this=0x1aa0770)
    at /build/buildd/mir-0.0.2/src/graphics/gbm/gbm_display_buffer.cpp:191
#6 mir::graphics::gbm::GBMDisplayBuffer::post_update (this=0x1aa0770)
    at /build/buildd/mir-0.0.2/src/graphics/gbm/gbm_display_buffer.cpp:171
#7 0x00007f732dc9b795 in operator() (buffer=..., this=0x1b313b0)
    at /build/buildd/mir-0.0.2/src/compositor/compositor.cpp:74
#8 std::_Function_handler<void(mir::graphics::DisplayBuffer&), mir::compositor::Compositor::render(mir::graphics::Display*)::<lambda(mir::graphics::DisplayBuffer&)> >::_M_invoke(const std::_Any_data &, mir::graphics::DisplayBuffer &) (__functor=...,
    __args#0=...) at /usr/include/c++/4.6/functional:1778
#9 0x00007f732dcc180c in operator() (__args#0=..., this=0x7fff039c0300)
    at /usr/include/c++/4.6/functional:2161
#10 mir::graphics::gbm::GBMDisplay::for_each_display_buffer(std::function<void (mir::graphics::DisplayBuffer&)> const&) (this=<optimised out>, f=...)
    at /build/buildd/mir-0.0.2/src/graphics/gbm/gbm_display.cpp:63
#11 0x00007f732dc9b562 in mir::compositor::Compositor::render (this=0x1bf22c0,
    display=0x1a23110) at /build/buildd/mir-0.0.2/src/compositor/compositor.cpp:75
#12 0x00007f732dc8cf2d in mir::DisplayServer::start (this=0x7fff039c0510)
    at /build/buildd/mir-0.0.2/src/display_server.cpp:103
#13 0x0000000000406964 in run_mir (socket_file="/tmp/mir_socket")
    at /build/buildd/mir-0.0.2/src/main.cpp:63
#14 main (argc=3, argv=0x7fff039c0618) at /build/buildd/mir-0.0.2/src/main.cpp:96

(gdb) thread apply all bt

Thread 12 (Thread 0x7f73280b8700 (LWP 10227)):
#0 pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1 0x00007f73289dca3b in pipe_semaphore_wait (sema=0x1a1c310)
    at ../../../../../../../src/gallium/auxiliary/os/os_thread.h:433
#2 radeon_drm_cs_emit_ioctl (param=0x1a1c130) at radeon_drm_winsys.c:518
#3 0x00007f732da19f8e in start_thread (arg=0x7f73280b8700) at pthread_create.c:311
#4 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 11 (Thread 0x7f7324ca2700 (LWP 10228)):
#0 pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1 0x00007f732dcb0e9b in wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > (lock=..., this=0x7f7324ca1db0)
    at /usr/include/boost/asio/detail/posix_event.hpp:80
#2 do_run_one (ec=..., private_op_queue=..., this_thread=..., lock=...,
    this=<optimised out>)
    at /usr/include/boost/asio/detail/impl/task_io_service.ipp:380
#3 boost::asio::detail::task_io_service::run (this=0x1c03600, ec=...)
    at /usr/include/boost/asio/detail/impl/task_io_service.ipp:146
#4 0x00007f732dcb1375 in boost::asio::io_service::run (this=0x1b34220)
    at /usr/include/boost/asio/impl/io_service.ipp:59
#5 0x00007f732d5619f0 in std::(anonymous namespace)::execute_native_thread_routine
    (__p=<optimised out>) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:74
#6 0x00007f732da19f8e in start_thread (arg=0x7f7324ca2700) at pthread_create.c:311
#7 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 10 (Thread 0x7f73244a1700 (LWP 10229)):
#0 pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1 0x00007f732dcb0e9b in wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > (lock=..., this=0x7f73244a0db0)
    at /usr/include/boost/asio/detail/posix_event.hpp:80
#2 do_run_one (ec=..., private_op_queue=..., this_thread=..., lock=...,
    this=<optimised out>)
    at /usr/include/boost/asio/detail/impl/task_io_service.ipp:380
#3 boost::asio::detail::task_io_service::run (this=0x1c03600, ec=...)
    at /usr/include/boost/asio/detail/impl/task_io_service.ipp:146
#4 0x00007f732dcb1375 in boost::asio::io_service::run (this=0x1b34220)
    at /usr/include/boost/asio/impl/io_service.ipp:59
#5 0x00007f732d5619f0 in std::(anonymous namespace)::execute_native_thread_routine
---Type <return> to continue, or q <return> to quit---q
 (Quit
(gdb) set pagination 0
(gdb) thread apply all bt full

Thread 12 (Thread 0x7f73280b8700 (LWP 10227)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f73289dca3b in pipe_semaphore_wait (sema=0x1a1c310) at ../../../../../../../src/gallium/auxiliary/os/os_thread.h:433
No locals.
#2 radeon_drm_cs_emit_ioctl (param=0x1a1c130) at radeon_drm_winsys.c:518
        ws = 0x1a1c130
        cs = <optimised out>
        i = <optimised out>
        empty_stack = <optimised out>
#3 0x00007f732da19f8e in start_thread (arg=0x7f73280b8700) at pthread_create.c:311
        __res = <optimised out>
        pd = 0x7f73280b8700
        now = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140132569810688, 5423417445248852111, 0, 140132670877792, 140132663572288, 4096, -5357725031447732081, -5357733049048440689}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimised out>
        sp = <optimised out>
        freesize = <optimised out>
        __PRETTY_FUNCTION__ = "start_thread"
#4 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
No locals.

Thread 11 (Thread 0x7f7324ca2700 (LWP 10228)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f732dcb0e9b in wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > (lock=..., this=0x7f7324ca1db0) at /usr/include/boost/asio/detail/posix_event.hpp:80
No locals.
#2 do_run_one (ec=..., private_op_queue=..., this_thread=..., lock=..., this=<optimised out>) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:380
No locals.
#3 boost::asio::detail::task_io_service::run (this=0x1c03600, ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:146
        this_thread = {wakeup_event = 0x7f7324ca1db0, private_op_queue = 0x0, next = 0x7f7320498ce0}
        wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {__data = {__lock = 0, __futex = 309, __total_seq = 155, __wakeup_seq = 154, __woken_seq = 154, __mutex = 0x1c03630, __nwaiters = 2, __broadcast_seq = 0}, __size = "\000\000\000\000\065\001\000\000\233\000\000\000\000\000\000\000\232\000\000\000\000\000\000\000\232\000\000\000\000\000\000\000\060\066\300\001\000\000\000\000\002\000\000\000\000\000\000", __align = 1327144894464}, signalled_ = false}
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, key_ = 0x1c03600, value_ = 0x7f7324ca1ce0, next_ = 0x0}
        private_op_queue = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x1c03630, locked_ = true}
        n = <optimised out>
#4 0x00007f732dcb1375 in boost::asio::io_service::run (this=0x1b34220) at /usr/include/boost/asio/impl/io_service.ipp:59
        ec = {m_val = 0, m_cat = 0x7f732cca90d8}
        s = <optimised out>
#5 0x00007f732d5619f0 in std::(anonymous namespace)::execute_native_thread_routine (__p=<optimised out>) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:74
        __t = <optimised out>
#6 0x00007f732da19f8e in start_thread (arg=0x7f7324ca2700) at pthread_create.c:311
        __res = <optimised out>
        pd = 0x7f7324ca2700
        now = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140132515194624, 5423417445248852111, 0, 140132670877792, 140132663572288, 4096, -5357716775446847345, -5357733049048440689}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimised out>
        sp = <optimised out>
        freesize = <optimised out>
        __PRETTY_FUNCTION__ = "start_thread"
#7 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
No locals.

Thread 10 (Thread 0x7f73244a1700 (LWP 10229)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f732dcb0e9b in wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > (lock=..., this=0x7f73244a0db0) at /usr/include/boost/asio/detail/posix_event.hpp:80
No locals.
#2 do_run_one (ec=..., private_op_queue=..., this_thread=..., lock=..., this=<optimised out>) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:380
No locals.
#3 boost::asio::detail::task_io_service::run (this=0x1c03600, ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:146
        this_thread = {wakeup_event = 0x7f73244a0db0, private_op_queue = 0x0, next = 0x7f7321c9bce0}
        wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {__data = {__lock = 0, __futex = 1, __total_seq = 1, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x1c03630, __nwaiters = 2, __broadcast_seq = 0}, __size = "\000\000\000\000\001\000\000\000\001", '\000' <repeats 23 times>, "06\300\001\000\000\000\000\002\000\000\000\000\000\000", __align = 4294967296}, signalled_ = false}
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, key_ = 0x1c03600, value_ = 0x7f73244a0ce0, next_ = 0x0}
        private_op_queue = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x1c03630, locked_ = true}
        n = <optimised out>
#4 0x00007f732dcb1375 in boost::asio::io_service::run (this=0x1b34220) at /usr/include/boost/asio/impl/io_service.ipp:59
        ec = {m_val = 0, m_cat = 0x7f732cca90d8}
        s = <optimised out>
#5 0x00007f732d5619f0 in std::(anonymous namespace)::execute_native_thread_routine (__p=<optimised out>) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:74
        __t = <optimised out>
#6 0x00007f732da19f8e in start_thread (arg=0x7f73244a1700) at pthread_create.c:311
        __res = <optimised out>
        pd = 0x7f73244a1700
        now = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140132506801920, 5423417445248852111, 0, 140132670877792, 140132663572288, 4096, -5357715676472090481, -5357733049048440689}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimised out>
        sp = <optimised out>
        freesize = <optimised out>
        __PRETTY_FUNCTION__ = "start_thread"
#7 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
No locals.

Thread 9 (Thread 0x7f7323ca0700 (LWP 10230)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f732dcb0e9b in wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > (lock=..., this=0x7f7323c9fdb0) at /usr/include/boost/asio/detail/posix_event.hpp:80
No locals.
#2 do_run_one (ec=..., private_op_queue=..., this_thread=..., lock=..., this=<optimised out>) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:380
No locals.
#3 boost::asio::detail::task_io_service::run (this=0x1c03600, ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:146
        this_thread = {wakeup_event = 0x7f7323c9fdb0, private_op_queue = 0x0, next = 0x7f73244a0ce0}
        wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {__data = {__lock = 0, __futex = 1, __total_seq = 1, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x1c03630, __nwaiters = 2, __broadcast_seq = 0}, __size = "\000\000\000\000\001\000\000\000\001", '\000' <repeats 23 times>, "06\300\001\000\000\000\000\002\000\000\000\000\000\000", __align = 4294967296}, signalled_ = false}
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, key_ = 0x1c03600, value_ = 0x7f7323c9fce0, next_ = 0x0}
        private_op_queue = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x1c03630, locked_ = true}
        n = <optimised out>
#4 0x00007f732dcb1375 in boost::asio::io_service::run (this=0x1b34220) at /usr/include/boost/asio/impl/io_service.ipp:59
        ec = {m_val = 0, m_cat = 0x7f732cca90d8}
        s = <optimised out>
#5 0x00007f732d5619f0 in std::(anonymous namespace)::execute_native_thread_routine (__p=<optimised out>) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:74
        __t = <optimised out>
#6 0x00007f732da19f8e in start_thread (arg=0x7f7323ca0700) at pthread_create.c:311
        __res = <optimised out>
        pd = 0x7f7323ca0700
        now = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140132498409216, 5423417445248852111, 0, 140132670877792, 140132663572288, 4096, -5357701370472898417, -5357733049048440689}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimised out>
        sp = <optimised out>
        freesize = <optimised out>
        __PRETTY_FUNCTION__ = "start_thread"
#7 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
No locals.

Thread 8 (Thread 0x7f732349f700 (LWP 10231)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f732dcb0e9b in wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > (lock=..., this=0x7f732349edb0) at /usr/include/boost/asio/detail/posix_event.hpp:80
No locals.
#2 do_run_one (ec=..., private_op_queue=..., this_thread=..., lock=..., this=<optimised out>) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:380
No locals.
#3 boost::asio::detail::task_io_service::run (this=0x1c03600, ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:146
        this_thread = {wakeup_event = 0x7f732349edb0, private_op_queue = 0x0, next = 0x0}
        wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {__data = {__lock = 0, __futex = 1, __total_seq = 1, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x1c03630, __nwaiters = 2, __broadcast_seq = 0}, __size = "\000\000\000\000\001\000\000\000\001", '\000' <repeats 23 times>, "06\300\001\000\000\000\000\002\000\000\000\000\000\000", __align = 4294967296}, signalled_ = false}
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, key_ = 0x1c03600, value_ = 0x7f732349ece0, next_ = 0x0}
        private_op_queue = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x1c03630, locked_ = true}
        n = <optimised out>
#4 0x00007f732dcb1375 in boost::asio::io_service::run (this=0x1b34220) at /usr/include/boost/asio/impl/io_service.ipp:59
        ec = {m_val = 0, m_cat = 0x7f732cca90d8}
        s = <optimised out>
#5 0x00007f732d5619f0 in std::(anonymous namespace)::execute_native_thread_routine (__p=<optimised out>) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:74
        __t = <optimised out>
#6 0x00007f732da19f8e in start_thread (arg=0x7f732349f700) at pthread_create.c:311
        __res = <optimised out>
        pd = 0x7f732349f700
        now = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140132490016512, 5423417445248852111, 0, 140132670877792, 140132663572288, 4096, -5357700271498141553, -5357733049048440689}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimised out>
        sp = <optimised out>
        freesize = <optimised out>
        __PRETTY_FUNCTION__ = "start_thread"
#7 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
No locals.

Thread 7 (Thread 0x7f7322c9e700 (LWP 10232)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f732dcb0e9b in wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > (lock=..., this=0x7f7322c9ddb0) at /usr/include/boost/asio/detail/posix_event.hpp:80
No locals.
#2 do_run_one (ec=..., private_op_queue=..., this_thread=..., lock=..., this=<optimised out>) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:380
No locals.
#3 boost::asio::detail::task_io_service::run (this=0x1c03600, ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:146
        this_thread = {wakeup_event = 0x7f7322c9ddb0, private_op_queue = 0x0, next = 0x7f732349ece0}
        wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {__data = {__lock = 0, __futex = 1, __total_seq = 1, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x1c03630, __nwaiters = 2, __broadcast_seq = 0}, __size = "\000\000\000\000\001\000\000\000\001", '\000' <repeats 23 times>, "06\300\001\000\000\000\000\002\000\000\000\000\000\000", __align = 4294967296}, signalled_ = false}
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, key_ = 0x1c03600, value_ = 0x7f7322c9dce0, next_ = 0x0}
        private_op_queue = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x1c03630, locked_ = true}
        n = <optimised out>
#4 0x00007f732dcb1375 in boost::asio::io_service::run (this=0x1b34220) at /usr/include/boost/asio/impl/io_service.ipp:59
        ec = {m_val = 0, m_cat = 0x7f732cca90d8}
        s = <optimised out>
#5 0x00007f732d5619f0 in std::(anonymous namespace)::execute_native_thread_routine (__p=<optimised out>) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:74
        __t = <optimised out>
#6 0x00007f732da19f8e in start_thread (arg=0x7f7322c9e700) at pthread_create.c:311
        __res = <optimised out>
        pd = 0x7f7322c9e700
        now = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140132481623808, 5423417445248852111, 0, 140132670877792, 140132663572288, 4096, -5357703570569895793, -5357733049048440689}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimised out>
        sp = <optimised out>
        freesize = <optimised out>
        __PRETTY_FUNCTION__ = "start_thread"
#7 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
No locals.

Thread 6 (Thread 0x7f732249d700 (LWP 10233)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f732dcb0e9b in wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > (lock=..., this=0x7f732249cdb0) at /usr/include/boost/asio/detail/posix_event.hpp:80
No locals.
#2 do_run_one (ec=..., private_op_queue=..., this_thread=..., lock=..., this=<optimised out>) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:380
No locals.
#3 boost::asio::detail::task_io_service::run (this=0x1c03600, ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:146
        this_thread = {wakeup_event = 0x7f732249cdb0, private_op_queue = 0x0, next = 0x7f7323c9fce0}
        wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {__data = {__lock = 0, __futex = 1, __total_seq = 1, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x1c03630, __nwaiters = 2, __broadcast_seq = 0}, __size = "\000\000\000\000\001\000\000\000\001", '\000' <repeats 23 times>, "06\300\001\000\000\000\000\002\000\000\000\000\000\000", __align = 4294967296}, signalled_ = false}
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, key_ = 0x1c03600, value_ = 0x7f732249cce0, next_ = 0x0}
        private_op_queue = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x1c03630, locked_ = true}
        n = <optimised out>
#4 0x00007f732dcb1375 in boost::asio::io_service::run (this=0x1b34220) at /usr/include/boost/asio/impl/io_service.ipp:59
        ec = {m_val = 0, m_cat = 0x7f732cca90d8}
        s = <optimised out>
#5 0x00007f732d5619f0 in std::(anonymous namespace)::execute_native_thread_routine (__p=<optimised out>) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:74
        __t = <optimised out>
#6 0x00007f732da19f8e in start_thread (arg=0x7f732249d700) at pthread_create.c:311
        __res = <optimised out>
        pd = 0x7f732249d700
        now = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140132473231104, 5423417445248852111, 0, 140132670877792, 140132663572288, 4096, -5357702471595138929, -5357733049048440689}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimised out>
        sp = <optimised out>
        freesize = <optimised out>
        __PRETTY_FUNCTION__ = "start_thread"
#7 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
No locals.

Thread 5 (Thread 0x7f7321c9c700 (LWP 10234)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f732dcb0e9b in wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > (lock=..., this=0x7f7321c9bdb0) at /usr/include/boost/asio/detail/posix_event.hpp:80
No locals.
#2 do_run_one (ec=..., private_op_queue=..., this_thread=..., lock=..., this=<optimised out>) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:380
No locals.
#3 boost::asio::detail::task_io_service::run (this=0x1c03600, ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:146
        this_thread = {wakeup_event = 0x7f7321c9bdb0, private_op_queue = 0x0, next = 0x7f7322c9dce0}
        wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {__data = {__lock = 0, __futex = 1, __total_seq = 1, __wakeup_seq = 0, __woken_seq = 0, __mutex = 0x1c03630, __nwaiters = 2, __broadcast_seq = 0}, __size = "\000\000\000\000\001\000\000\000\001", '\000' <repeats 23 times>, "06\300\001\000\000\000\000\002\000\000\000\000\000\000", __align = 4294967296}, signalled_ = false}
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, key_ = 0x1c03600, value_ = 0x7f7321c9bce0, next_ = 0x0}
        private_op_queue = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x1c03630, locked_ = true}
        n = <optimised out>
#4 0x00007f732dcb1375 in boost::asio::io_service::run (this=0x1b34220) at /usr/include/boost/asio/impl/io_service.ipp:59
        ec = {m_val = 0, m_cat = 0x7f732cca90d8}
        s = <optimised out>
#5 0x00007f732d5619f0 in std::(anonymous namespace)::execute_native_thread_routine (__p=<optimised out>) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:74
        __t = <optimised out>
#6 0x00007f732da19f8e in start_thread (arg=0x7f7321c9c700) at pthread_create.c:311
        __res = <optimised out>
        pd = 0x7f7321c9c700
        now = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140132464838400, 5423417445248852111, 0, 140132670877792, 140132663572288, 4096, -5357705766371925873, -5357733049048440689}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimised out>
        sp = <optimised out>
        freesize = <optimised out>
        __PRETTY_FUNCTION__ = "start_thread"
#7 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
No locals.

Thread 4 (Thread 0x7f732149b700 (LWP 10235)):
#0 0x00007f732cfc3233 in select () at ../sysdeps/unix/syscall-template.S:81
No locals.
#1 0x00007f732dcb087b in select (ec=<synthetic pointer>, timeout=0x7f732149ac70, exceptfds=0x1c329b0, writefds=0x1c32928, readfds=0x1c328a0, nfds=9) at /usr/include/boost/asio/detail/impl/socket_ops.ipp:1683
No locals.
#2 boost::asio::detail::select_reactor::run (this=0x1c32780, block=true, ops=...) at /usr/include/boost/asio/detail/impl/select_reactor.ipp:213
        tv_buf = {tv_sec = 299, tv_usec = 396717}
        tv = 0x7f732149ac70
        retval = <optimised out>
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x1c327b0, locked_ = false}
        max_fd = 8
        have_work_to_do = true
#3 0x00007f732dcb0ce2 in do_run_one (ec=..., private_op_queue=..., this_thread=..., lock=..., this=<optimised out>) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:353
        completed_ops = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        on_exit = {task_io_service_ = 0x1c03600, lock_ = 0x7f732149ad70, ops_ = 0x7f732149ad40}
        o = <optimised out>
        more_handlers = <optimised out>
#4 boost::asio::detail::task_io_service::run (this=0x1c03600, ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:146
        this_thread = {wakeup_event = 0x7f732149adb0, private_op_queue = 0x0, next = 0x0}
        wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {__data = {__lock = 0, __futex = 266, __total_seq = 133, __wakeup_seq = 133, __woken_seq = 133, __mutex = 0x1c03630, __nwaiters = 0, __broadcast_seq = 0}, __size = "\000\000\000\000\n\001\000\000\205\000\000\000\000\000\000\000\205\000\000\000\000\000\000\000\205\000\000\000\000\000\000\000\060\066\300\001", '\000' <repeats 11 times>, __align = 1142461300736}, signalled_ = true}
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, key_ = 0x1c03600, value_ = 0x7f732149ace0, next_ = 0x0}
        private_op_queue = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x1c03630, locked_ = false}
        n = <optimised out>
#5 0x00007f732dcb1375 in boost::asio::io_service::run (this=0x1b34220) at /usr/include/boost/asio/impl/io_service.ipp:59
        ec = {m_val = 0, m_cat = 0x7f732cca90d8}
        s = <optimised out>
#6 0x00007f732d5619f0 in std::(anonymous namespace)::execute_native_thread_routine (__p=<optimised out>) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:74
        __t = <optimised out>
#7 0x00007f732da19f8e in start_thread (arg=0x7f732149b700) at pthread_create.c:311
        __res = <optimised out>
        pd = 0x7f732149b700
        now = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140132456445696, 5423417445248852111, 0, 140132670877792, 140132663572288, 4096, -5357704667397169009, -5357733049048440689}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimised out>
        sp = <optimised out>
        freesize = <optimised out>
        __PRETTY_FUNCTION__ = "start_thread"
#8 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
No locals.

Thread 3 (Thread 0x7f7320c9a700 (LWP 10236)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f732dcb0e9b in wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > (lock=..., this=0x7f7320c99db0) at /usr/include/boost/asio/detail/posix_event.hpp:80
No locals.
#2 do_run_one (ec=..., private_op_queue=..., this_thread=..., lock=..., this=<optimised out>) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:380
No locals.
#3 boost::asio::detail::task_io_service::run (this=0x1c03600, ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:146
        this_thread = {wakeup_event = 0x7f7320c99db0, private_op_queue = 0x0, next = 0x7f732249cce0}
        wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {__data = {__lock = 0, __futex = 11, __total_seq = 6, __wakeup_seq = 5, __woken_seq = 5, __mutex = 0x1c03630, __nwaiters = 2, __broadcast_seq = 0}, __size = "\000\000\000\000\v\000\000\000\006\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\060\066\300\001\000\000\000\000\002\000\000\000\000\000\000", __align = 47244640256}, signalled_ = false}
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, key_ = 0x1c03600, value_ = 0x7f7320c99ce0, next_ = 0x0}
        private_op_queue = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x1c03630, locked_ = true}
        n = <optimised out>
#4 0x00007f732dcb1375 in boost::asio::io_service::run (this=0x1b34220) at /usr/include/boost/asio/impl/io_service.ipp:59
        ec = {m_val = 0, m_cat = 0x7f732cca90d8}
        s = <optimised out>
#5 0x00007f732d5619f0 in std::(anonymous namespace)::execute_native_thread_routine (__p=<optimised out>) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:74
        __t = <optimised out>
#6 0x00007f732da19f8e in start_thread (arg=0x7f7320c9a700) at pthread_create.c:311
        __res = <optimised out>
        pd = 0x7f7320c9a700
        now = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140132448052992, 5423417445248852111, 0, 140132670877792, 140132663572288, 4096, -5357707966468923249, -5357733049048440689}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimised out>
        sp = <optimised out>
        freesize = <optimised out>
        __PRETTY_FUNCTION__ = "start_thread"
#7 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
No locals.

Thread 2 (Thread 0x7f7320499700 (LWP 10237)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f732dcb0e9b in wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > (lock=..., this=0x7f7320498db0) at /usr/include/boost/asio/detail/posix_event.hpp:80
No locals.
#2 do_run_one (ec=..., private_op_queue=..., this_thread=..., lock=..., this=<optimised out>) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:380
No locals.
#3 boost::asio::detail::task_io_service::run (this=0x1c03600, ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:146
        this_thread = {wakeup_event = 0x7f7320498db0, private_op_queue = 0x0, next = 0x7f7320c99ce0}
        wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {__data = {__lock = 0, __futex = 309, __total_seq = 155, __wakeup_seq = 154, __woken_seq = 154, __mutex = 0x1c03630, __nwaiters = 2, __broadcast_seq = 0}, __size = "\000\000\000\000\065\001\000\000\233\000\000\000\000\000\000\000\232\000\000\000\000\000\000\000\232\000\000\000\000\000\000\000\060\066\300\001\000\000\000\000\002\000\000\000\000\000\000", __align = 1327144894464}, signalled_ = false}
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, key_ = 0x1c03600, value_ = 0x7f7320498ce0, next_ = 0x0}
        private_op_queue = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x1c03630, locked_ = true}
        n = <optimised out>
#4 0x00007f732dcb1375 in boost::asio::io_service::run (this=0x1b34220) at /usr/include/boost/asio/impl/io_service.ipp:59
        ec = {m_val = 0, m_cat = 0x7f732cca90d8}
        s = <optimised out>
#5 0x00007f732d5619f0 in std::(anonymous namespace)::execute_native_thread_routine (__p=<optimised out>) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:74
        __t = <optimised out>
#6 0x00007f732da19f8e in start_thread (arg=0x7f7320499700) at pthread_create.c:311
        __res = <optimised out>
        pd = 0x7f7320499700
        now = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140132439660288, 5423417445248852111, 0, 140132670877792, 140132663572288, 4096, -5357706867494166385, -5357733049048440689}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimised out>
        sp = <optimised out>
        freesize = <optimised out>
        __PRETTY_FUNCTION__ = "start_thread"
#7 0x00007f732cfcae1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
No locals.

Thread 1 (Thread 0x7f732e0eb780 (LWP 10226)):
#0 std::_Hashtable<unsigned int, std::pair<unsigned int const, mir::graphics::gbm::PageFlipEventData>, std::allocator<std::pair<unsigned int const, mir::graphics::gbm::PageFlipEventData> >, std::_Select1st<std::pair<unsigned int const, mir::graphics::gbm::PageFlipEventData> >, std::equal_to<unsigned int>, std::hash<unsigned int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, false, false, true>::erase (this=0x1c043f0, __k=@0x1bf9bd0: 4294967295) at /usr/include/c++/4.6/bits/hashtable.h:1097
        __slot = 0x5c9ad29
        __saved_slot = <optimised out>
        __code = 4294967295
        __n = 12137887
        __result = 0
#1 0x00007f732c8a2873 in drmHandleEvent (fd=3, evctx=0x7f732def7ad0 <mir::graphics::gbm::KMSPageFlipper::wait_for_flip(unsigned int)::evctx>) at ../xf86drmMode.c:811
        buffer = "\002\000\000\000 \000\000\000\277\001\000\000\000\000\065\066\000\000\335\332\a\000\362\025\n", '\000' <repeats 13 times>, "\037\000\000\000\000\000\000\000\240\376\233\003\377\177\000\000\020\003\261\001", '\000' <repeats 12 times>"\240, \376\233\003\377\177\000\000\240\376\233\003\377\177\000\000X\377\233\003\377\177\000\000X\377\233\003\377\177\000\000\372(s\177\000\000p\033\252\001\000\000\000\000\366+\234(s\177\000\000p\002\261\001", '\000' <repeats 12 times>, "p\033\252\001", '\000' <repeats 12 times>, " \370\260\001", '\000' <repeats 12 times>, "p\033\252\001\000\000\000\000\271=\235(s\177\000\000 R\301\001\000\000\000\000\001", '\000' <repeats 11 times>"\200, \a\000\000\001\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\270'\252\001\000\000\000\000 \000\000\000\000\000\000\000\060\002\276\001\000\000\000\000\310"...
        len = <optimised out>
        i = <optimised out>
        e = 0x7fff039bfc60
        vblank = 0x7fff039bfc60
#2 0x00007f732dcca107 in mir::graphics::gbm::KMSPageFlipper::wait_for_flip (this=0x1a28230, crtc_id=10) at /build/buildd/mir-0.0.2/src/graphics/gbm/kms_page_flipper.cpp:155
        lock = {_M_device = 0x1a28298, _M_owns = true}
        tv = {tv_sec = 0, tv_usec = 99996}
        fds = {fds_bits = {8, 0 <repeats 15 times>}}
        ret = <optimised out>
        evctx = {version = 2, vblank_handler = 0x0, page_flip_handler = 0x7f732dcc9ff0 <(anonymous namespace)::page_flip_handler(int, unsigned int, unsigned int, unsigned int, void*)>}
        invalid_tid = {_M_thread = 0}
        done = <optimised out>
#3 0x00007f732dcc80e9 in mir::graphics::gbm::KMSOutput::wait_for_page_flip (this=<optimised out>) at /build/buildd/mir-0.0.2/src/graphics/gbm/kms_output.cpp:168
        __PRETTY_FUNCTION__ = "void mir::graphics::gbm::KMSOutput::wait_for_page_flip()"
#4 0x00007f732dcc61b4 in mir::graphics::gbm::GBMDisplayBuffer::schedule_and_wait_for_page_flip (this=0x1aa0770, bufobj=0x1b3b3d0) at /build/buildd/mir-0.0.2/src/graphics/gbm/gbm_display_buffer.cpp:263
        __for_range = std::vector of length 1, capacity 1 = {std::shared_ptr (count 2, weak 0) 0x1aa0390}
        page_flips_pending = <optimised out>
#5 0x00007f732dcc622b in post_update (this=0x1aa0770) at /build/buildd/mir-0.0.2/src/graphics/gbm/gbm_display_buffer.cpp:191
        bufobj = 0x1b3b3d0
#6 mir::graphics::gbm::GBMDisplayBuffer::post_update (this=0x1aa0770) at /build/buildd/mir-0.0.2/src/graphics/gbm/gbm_display_buffer.cpp:171
No locals.
#7 0x00007f732dc9b795 in operator() (buffer=..., this=0x1b313b0) at /build/buildd/mir-0.0.2/src/compositor/compositor.cpp:74
        applicator = {<mir::compositor::OperatorForRenderables> = {_vptr.OperatorForRenderables = 0x7f732def2d90 <vtable for mir::compositor::RenderingOperator+16>}, renderer = @0x1b31030, resources = std::vector of length 1, capacity 1 = {std::shared_ptr (count 1, weak 0) 0x1b73510}}
        selector = {<mir::compositor::FilterForRenderables> = {_vptr.FilterForRenderables = 0x7f732def0270 <vtable for (anonymous namespace)::FilterForVisibleRenderablesInRegion+16>}, enclosing_region = @0x7fff039c0280}
#8 std::_Function_handler<void(mir::graphics::DisplayBuffer&), mir::compositor::Compositor::render(mir::graphics::Display*)::<lambda(mir::graphics::DisplayBuffer&)> >::_M_invoke(const std::_Any_data &, mir::graphics::DisplayBuffer &) (__functor=..., __args#0=...) at /usr/include/c++/4.6/functional:1778
No locals.
#9 0x00007f732dcc180c in operator() (__args#0=..., this=0x7fff039c0300) at /usr/include/c++/4.6/functional:2161
No locals.
#10 mir::graphics::gbm::GBMDisplay::for_each_display_buffer(std::function<void (mir::graphics::DisplayBuffer&)> const&) (this=<optimised out>, f=...) at /build/buildd/mir-0.0.2/src/graphics/gbm/gbm_display.cpp:63
        db_ptr = std::tuple containing = {[1] = , [2] = {<std::default_delete<mir::graphics::DisplayBuffer>> = {<No data fields>}, <No data fields>}}
        __for_range = <optimised out>
#11 0x00007f732dc9b562 in mir::compositor::Compositor::render (this=0x1bf22c0, display=0x1a23110) at /build/buildd/mir-0.0.2/src/compositor/compositor.cpp:75
No locals.
#12 0x00007f732dc8cf2d in mir::DisplayServer::start (this=0x7fff039c0510) at /build/buildd/mir-0.0.2/src/display_server.cpp:103
        lk = {_M_device = 0x1a16ae0, _M_owns = false}
#13 0x0000000000406964 in run_mir (socket_file="/tmp/mir_socket") at /build/buildd/mir-0.0.2/src/main.cpp:63
        config = {<mir::ServerConfiguration> = {_vptr.ServerConfiguration = 0x7f732def0870 <vtable for mir::DefaultServerConfiguration+16>}, socket_file = "/tmp/mir_socket", options = std::shared_ptr (count 1, weak 0) 0x1c034e0, graphics_platform = std::shared_ptr (count 9, weak 1) 0x1a1d1e0, application_listener = std::shared_ptr (empty) 0x0}
        server = {p = std::tuple containing = {[1] = , [2] = {<std::default_delete<mir::DisplayServer::Private>> = {<No data fields>}, <No data fields>}}}
#14 main (argc=3, argv=0x7fff039c0618) at /build/buildd/mir-0.0.2/src/main.cpp:96
        options = {<mir::options::Option> = {_vptr.Option = 0x7f732def2090 <vtable for mir::options::ProgramOption+16>}, options = <incomplete type>}
        desc = {static m_default_line_length = 80, m_caption = "Options", m_line_length = 80, m_min_description_length = 40, m_options = std::vector of length 2, capacity 2 = {{px = 0x1a1e410, pn = {pi_ = 0x1a1a0a0}}, {px = 0x1a18d70, pn = {pi_ = 0x1a191e0}}}, belong_to_group = std::vector<bool> of length 2, capacity 64 = {0, 0}, groups = std::vector of length 0, capacity 0}

Changed in mir:
importance: Undecided → Critical
summary: Crashes in drmHandleEvent - possibly triggered by client submitting
- buffer to slowly?
+ buffer too slowly?
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Re: wait_for_page_flip ... That's not waiting for the client to page flip is it?

Compiz will only page flip when something on the screen changes. So unless there is something animating on the screen immediately after login, it will go to sleep and will stop page flipping. The server should not make any assumptions about the time between page flips.

See also bug 1108725

Revision history for this message
Chris Halse Rogers (raof) wrote : Re: [Bug 1125852] Re: Crashes in drmHandleEvent - possibly triggered by client submitting buffer too slowly?

On Fri, Feb 15, 2013 at 4:31 PM, Daniel van Vugt <email address hidden> wrote:
Re: wait_for_page_flip ... That's not waiting for the client to page
flip is it?

I don't think so; I think that's submitting the compositor's pageflip to drm.

Compiz will only page flip when something on the screen changes. So
unless there is something animating on the screen immediately after
login, it will go to sleep and will stop page flipping. The server
should not make any assumptions about the time between page flips.

See also bug 1108725

Yeah; there's no point in flipping unchanged frames.

Revision history for this message
Alexandros Frantzis (afrantzis) wrote :

I have found the cause of this (for some reason the page flip event takes too long to come > 100ms) and I am considering solutions.

Changed in mir:
assignee: nobody → Alexandros Frantzis (afrantzis)
status: New → In Progress
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.0.2

Changed in mir:
status: In Progress → Fix Committed
information type: Proprietary → Public
Changed in mir:
milestone: none → 0.0.3
Changed in mir:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.