Comment 2 for bug 1352845

Revision history for this message
MichaƂ Sawicz (saviq) wrote :

We had to pull this, unfortunately there's a seldom, but still, deadlock when using this approach:

Thread 9 (Thread 0xaebff450 (LWP 15260)):
#0 0xb603f554 in __libc_do_syscall () from /lib/arm-linux-gnueabihf/libpthread.so.0
#1 0xb603b192 in pthread_cond_wait@@GLIBC_2.4 () from /lib/arm-linux-gnueabihf/libpthread.so.0
#2 0xb63b3794 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5
#3 0xb63aed2e in QSemaphore::acquire(int) () from /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5
#4 0xb6525436 in QMetaObject::activate(QObject*, int, int, void**) ()
   from /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5
#5 0xb4001384 in MirPlacementStrategy::sessionAboutToCreateSurface(mir::scene::Session const&, QSize&) ()
   from /usr/lib/arm-linux-gnueabihf/qt5/plugins/platforms/libqpa-mirserver.so
#6 0xb3ff239e in MirPlacementStrategy::place(mir::scene::Session const&, mir::scene::SurfaceCreationParameters const&) () from /usr/lib/arm-linux-gnueabihf/qt5/plugins/platforms/libqpa-mirserver.so
#7 0xb3e96f3e in mir::scene::SurfaceController::add_surface(mir::scene::SurfaceCreationParameters const&, mir::scene::Session*) () from /usr/lib/arm-linux-gnueabihf/libmirserver.so.24
#8 0xb3e81646 in mir::scene::ApplicationSession::create_surface(mir::scene::SurfaceCreationParameters const&)
    () from /usr/lib/arm-linux-gnueabihf/libmirserver.so.24
#9 0xb3eb2a5c in mir::frontend::SessionMediator::create_surface(google::protobuf::RpcController*, mir::protobuf::SurfaceParameters const*, mir::protobuf::Surface*, google::protobuf::Closure*) ()
   from /usr/lib/arm-linux-gnueabihf/libmirserver.so.24
#10 0xb3eb6228 in void mir::frontend::detail::invoke<mir::frontend::detail::ProtobufMessageProcessor, mir::frontend::detail::DisplayServer, mir::protobuf::DisplayServer, mir::protobuf::SurfaceParameters, mir::protobuf::Surface>(mir::frontend::detail::ProtobufMessageProcessor*, mir::frontend::detail::DisplayServer*, void (mir::protobuf::DisplayServer::*)(google::protobuf::RpcController*, mir::protobuf::SurfaceParameters const*, mir::protobuf::Surface*, google::protobuf::Closure*), mir::frontend::detail::Invocation const&) ()
   from /usr/lib/arm-linux-gnueabihf/libmirserver.so.24
#11 0xb3eb4f6a in mir::frontend::detail::ProtobufMessageProcessor::dispatch(mir::frontend::detail::Invocation const&) () from /usr/lib/arm-linux-gnueabihf/libmirserver.so.24
#12 0xb3ebb44c in mir::frontend::detail::SocketConnection::on_new_message(boost::system::error_code const&) ()
   from /usr/lib/arm-linux-gnueabihf/libmirserver.so.24
#13 0xb3ebb732 in mir::frontend::detail::SocketConnection::on_read_size(boost::system::error_code const&) ()
   from /usr/lib/arm-linux-gnueabihf/libmirserver.so.24
#14 0xb3ebd75a in boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::asio::detail::read_op<boost::asio::basic_stream_socket<boost::asio::local::stream_protocol, boost::asio::stream_socket_service<boost::asio::local::stream_protocol> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_exactly_t, std::function<void (boost::system::error_code const&, unsigned int)> > >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned int)
    () from /usr/lib/arm-linux-gnueabihf/libmirserver.so.24
#15 0xb3e697c6 in boost::asio::detail::task_io_service::run(boost::system::error_code&) ()
   from /usr/lib/arm-linux-gnueabihf/libmirserver.so.24
#16 0xb3eb861c in ?? () from /usr/lib/arm-linux-gnueabihf/libmirserver.so.24
#17 0xb630c360 in ?? () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#18 0xb6037f98 in start_thread () from /lib/arm-linux-gnueabihf/libpthread.so.0
#19 0xb61fe7cc in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)