Crash in USC during mir::compositor::BufferQueue::BufferQueue::operator()

Bug #1347789 reported by Michael Terry
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
Medium
Unassigned
mir (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

At least I think that's what's happening.

I got this crash on boot while testing the unlock-device script that unity8 provides (which basically just reboots and unlocks the greeter).

I'll attach the .crash file, but here's the stacktrace:

Core was generated by `unity-system-compositor --spinner=/usr/bin/unity-system-compositor-spinner --fi'.
Program terminated with signal SIGABRT, Aborted.
#0 __libc_do_syscall ()
    at ../ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:44
44 ../ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S: No such file or directory.
(gdb) bt
#0 __libc_do_syscall ()
    at ../ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:44
#1 0xb67eb05e in __GI_raise (sig=sig@entry=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#2 0xb67ebd4e in __GI_abort () at abort.c:89
#3 0xb67e62b8 in __assert_fail_base (
    fmt=0x1 <error: Cannot access memory at address 0x1>,
    assertion=0xb6ba10f4 "!pending_client_notifications.empty()",
    assertion@entry=0x0,
    file=0xb6ba0ff0 "/build/buildd/mir-0.5.0+14.10.20140722/src/server/compositor/buffer_queue.cpp", file@entry=0xb4a53000 "\001", line=136,
    line@entry=3062534324,
    function=function@entry=0xb6ba0cf4 <mir::compositor::BufferQueue::BufferQueue(int, std::shared_ptr<mir::graphics::GraphicBufferAllocator> const&, mir::graphics::BufferProperties const&, mir::compositor::FrameDroppingPolicyFactory const&)::{lambda()#1}::operator()() const::__PRETTY_FUNCTION__> "mir::compositor::BufferQueue::BufferQueue(int, const std::shared_ptr<mir::graphics::GraphicBufferAllocator>&, const mir::graphics::BufferProperties&, const mir::compositor::FrameDroppingPolicyFactory&"...) at assert.c:92
#4 0xb67e634e in __GI___assert_fail (assertion=0x0, file=0xb4a53000 "\001",
    line=3062534324,
    function=0xb6ba0cf4 <mir::compositor::BufferQueue::BufferQueue(int, std::shared_ptr<mir::graphics::GraphicBufferAllocator> const&, mir::graphics::BufferProperties const&, mir::compositor::FrameDroppingPolicyFactory const&)::{lambda()#1}::operator()() const::__PRETTY_FUNCTION__> "mir::compositor::BufferQueue::BufferQueue(int, const std::shared_ptr<mir::graphics::GraphicBufferAllocator>&, const mir::graphics::BufferProperties&, const mir::compositor::FrameDroppingPolicyFactory&"...) at assert.c:101
#5 0xb6b03f6a in operator() (__closure=0xb68a90b4 <lock>)
    at /build/buildd/mir-0.5.0+14.10.20140722/src/server/compositor/buffer_queue.cpp:136
#6 std::_Function_handler<void(), mir::compositor::BufferQueue::BufferQueue(int, const std::shared_ptr<mir::graphics::GraphicBufferAllocator>&, const mir::graphics::BufferProperties&, const mir::compositor::FrameDroppingPolicyFactory&)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...)
    at /usr/include/c++/4.9/functional:2039
#7 0xb6b02eec in operator() (this=0xae4018ac)
    at /usr/include/c++/4.9/functional:2439
#8 operator() (__closure=0xae4018a8)
    at /build/buildd/mir-0.5.0+14.10.20140722/src/server/compositor/timeout_frame_dropping_policy_factory.cpp:59
#9 std::_Function_handler<void(), (anonymous namespace)::TimeoutFrameDroppingPolicy::TimeoutFrameDroppingPolicy(const std::shared_ptr<mir::time::Timer>&, std::chrono::milliseconds, std::function<void()>)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/4.9/functional:2039
#10 0xb6aea5ac in operator() (ec=..., __closure=<optimized out>)
    at /build/buildd/mir-0.5.0+14.10.20140722/src/server/asio_main_loop.cpp:390
#11 std::_Function_handler<void(const boost::system::error_code&), (anonymous namespace)::make_handler(std::weak_ptr<(anonymous namespace)::AlarmImpl::InternalState>)::<lambda(const boost::system::error_code&)> >::_M_invoke(const std::_Any_data &, const boost::system::error_code &) (__functor=..., __args#0=...)
    at /usr/include/c++/4.9/functional:2039
#12 0xb6aefb20 in operator() (__args#0=..., this=0xbea21ac4)
    at /usr/include/c++/4.9/functional:2439
#13 operator() (this=0xbea21ac4)
    at /usr/include/boost/asio/detail/bind_handler.hpp:47
#14 asio_handler_invoke<boost::asio::detail::binder1<std::function<void(const boost::system::error_code&)>, boost::system::error_code> > (function=...)
    at /usr/include/boost/asio/handler_invoke_hook.hpp:69
#15 invoke<boost::asio::detail::binder1<std::function<void(const boost::system::error_code&)>, boost::system::error_code>, std::function<void(const boost::system::error_code&)> > (context=..., function=...)
    at /usr/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#16 boost::asio::detail::wait_handler<std::function<void (boost::system::error_code const&)> >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned int) (owner=0x88, base=<optimized out>)
    at /usr/include/boost/asio/detail/wait_handler.hpp:70
#17 0xb6aee2f6 in complete (bytes_transferred=<optimized out>, ec=...,
    owner=..., this=0xae4039f0)
    at /usr/include/boost/asio/detail/task_io_service_operation.hpp:38
#18 do_run_one (ec=..., this_thread=..., lock=..., this=0x147d7a0)
    at /usr/include/boost/asio/detail/impl/task_io_service.ipp:384
#19 boost::asio::detail::task_io_service::run (this=0x147d7a0, ec=...)
    at /usr/include/boost/asio/detail/impl/task_io_service.ipp:153
#20 0xb6aea404 in run (this=<optimized out>)
    at /usr/include/boost/asio/impl/io_service.ipp:59
#21 mir::AsioMainLoop::run (this=<optimized out>)
    at /build/buildd/mir-0.5.0+14.10.20140722/src/server/asio_main_loop.cpp:261
#22 0xb6ae391e in mir::DisplayServer::run (this=this@entry=0xbea21bf8)
    at /build/buildd/mir-0.5.0+14.10.20140722/src/server/display_server.cpp:223
#23 0xb6ae1434 in mir::run_mir(mir::ServerConfiguration&, std::function<void (mir::DisplayServer&)>) (config=..., init=...)
    at /build/buildd/mir-0.5.0+14.10.20140722/src/server/run_mir.cpp:93
#24 0x00037d16 in usc::SystemCompositor::run() ()
#25 0x0002f158 in main ()

Revision history for this message
Michael Terry (mterry) wrote :
Revision history for this message
Michael Terry (mterry) wrote :
Download full text (5.7 KiB)

Also on a separate boot, an almost identical stacktrace from unity8 this time:

Core was generated by `unity8'.
Program terminated with signal SIGABRT, Aborted.
#0 __libc_do_syscall ()
    at ../ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:44
#1 0xb620a05e in __GI_raise (sig=sig@entry=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#2 0xb620ad4e in __GI_abort () at abort.c:89
#3 0xb62052b8 in __assert_fail_base (
    fmt=0x1 <error: Cannot access memory at address 0x1>,
    assertion=0xb437d0f4 "!pending_client_notifications.empty()",
    assertion@entry=0x0,
    file=0xb437cff0 "/build/buildd/mir-0.5.0+14.10.20140722/src/server/compositor/buffer_queue.cpp", file@entry=0xb4612220 "\001", line=136,
    line@entry=3056369844,
    function=function@entry=0xb437ccf4 <mir::compositor::BufferQueue::BufferQueue(int, std::shared_ptr<mir::graphics::GraphicBufferAllocator> const&, mir::graphics::BufferProperties const&, mir::compositor::FrameDroppingPolicyFactory const&)::{lambda()#1}::operator()() const::__PRETTY_FUNCTION__> "mir::compositor::BufferQueue::BufferQueue(int, const std::shared_ptr<mir::graphics::GraphicBufferAllocator>&, const mir::graphics::BufferProperties&, const mir::compositor::FrameDroppingPolicyFactory&"...) at assert.c:92
#4 0xb620534e in __GI___assert_fail (assertion=0x0, file=0xb4612220 "\001",
    line=3056369844,
    function=0xb437ccf4 <mir::compositor::BufferQueue::BufferQueue(int, std::shared_ptr<mir::graphics::GraphicBufferAllocator> const&, mir::graphics::BufferProperties const&, mir::compositor::FrameDroppingPolicyFactory const&)::{lambda()#1}::operator()() const::__PRETTY_FUNCTION__> "mir::compositor::BufferQueue::BufferQueue(int, const std::shared_ptr<mir::graphics::GraphicBufferAllocator>&, const mir::graphics::BufferProperties&, const mir::compositor::FrameDroppingPolicyFactory&"...) at assert.c:101
#5 0xb42dff6a in operator() (__closure=0xb62c80b4 <lock>)
    at /build/buildd/mir-0.5.0+14.10.20140722/src/server/compositor/buffer_queue.cpp:136
#6 std::_Function_handler<void(), mir::compositor::BufferQueue::BufferQueue(int, const std::shared_ptr<mir::graphics::GraphicBufferAllocator>&, const mir::graphics::BufferProperties&, const mir::compositor::FrameDroppingPolicyFactory&)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...)
    at /usr/include/c++/4.9/functional:2039
#7 0xb42deeec in operator() (this=0x9d71b77c)
    at /usr/include/c++/4.9/functional:2439
#8 operator() (__closure=0x9d71b778)
    at /build/buildd/mir-0.5.0+14.10.20140722/src/server/compositor/timeout_frame_dropping_policy_factory.cpp:59
#9 std::_Function_handler<void(), (anonymous namespace)::TimeoutFrameDroppingPolicy::TimeoutFrameDroppingPolicy(const std::shared_ptr<mir::time::Timer>&, std::chrono::milliseconds, std::function<void()>)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/4.9/functional:2039
#10 0xb42c65ac in operator() (ec=..., __closure=<optimized out>)
    at /build/buildd/mir-0.5.0+14.10.20140722/src/server/asio_main_loop.cpp:390
#11 std::_Function_handler<void(const boost::system::error_code&), (anonymous namespace)::make_handler(std::weak_ptr<(anonymous ...

Read more...

Changed in mir:
status: New → Fix Released
Changed in mir (Ubuntu):
status: New → Confirmed
Changed in mir:
importance: Undecided → Medium
Revision history for this message
Alberto Aguirre (albaguirre) wrote :

Looks like we need to backport r1775 from mir/devel to 0.5 series...

Changed in mir:
milestone: none → 0.6.0
kevin gunn (kgunn72)
Changed in mir:
milestone: 0.6.0 → 0.5.1
milestone: 0.5.1 → 0.6.0
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.