← Back to team overview

touch-packages team mailing list archive

[Bug 1352845] Re: Initial surface size not decided by shell, but guessed by qtmir

 

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?)

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to unity8 in Ubuntu.
https://bugs.launchpad.net/bugs/1352845

Title:
  Initial surface size not decided by shell, but guessed by qtmir

Status in Qt integration with the Mir display server:
  In Progress
Status in “qtmir” package in Ubuntu:
  New
Status in “unity-api” package in Ubuntu:
  New
Status in “unity8” package in Ubuntu:
  New

Bug description:
  When a client connects to Mir and requests a surface with particular
  geometry, qtmir overrides the requested initial geometry with the
  width/height of the display. Once the surface has been drawn to, shell
  finally is notified of the surface and resizes it again.

  These multiple resizes are bad. Shell should decide the initial
  geometry, instead of qtmir guessing it.

To manage notifications about this bug go to:
https://bugs.launchpad.net/qtmir/+bug/1352845/+subscriptions