← Back to team overview

touch-packages team mailing list archive

[Bug 1538632] Re: ui freezes when simultaneously moving mouse & plug/unplug hdmi

 

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

** Changed in: mir
       Status: In Progress => Fix Committed

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

Title:
  ui freezes when simultaneously moving mouse & plug/unplug hdmi

Status in canonical-pocket-desktop:
  In Progress
Status in Mir:
  Fix Committed
Status in mir package in Ubuntu:
  New

Bug description:
  confirmed to happen in latest image with usc0.3 and previous images
  with usc0.2

  steps
  1) flash ubuntu-touch/rc-proposed/ubuntu-pd
  2) connect bt mouse and see unity8 go into windowed mode
  3)  move mouse about screen while at the same time connect slimport hdmi cable

  ui will then freeze but seems content, let it sit for 30 min no reboot or restart, no crash files, power button does not do anything.
  It's also possible to have the slimport already connected - move mouse around disconnect, the ui will freeze altho in this case unity8 always seems to restart.

  There are no usc crash files.

  The problem is a dead lock on the Display/DisplaySyncGroup mutexes
  between CompositingFunctor->SystemWindowManager->GraphicsDisplayLayout
  and DisplayInputRegion.

  Thread 6 (Thread 0xb0dff3d0 (LWP 1530)):
  #0  0xb6cd5d44 in __libc_do_syscall () from /lib/arm-linux-gnueabihf/libpthread.so.0
  No symbol table info available.
  #1  0xb6cd395c in __lll_lock_wait () from /lib/arm-linux-gnueabihf/libpthread.so.0
  No symbol table info available.
  #2  0xb6ccf19e in pthread_mutex_lock () from /lib/arm-linux-gnueabihf/libpthread.so.0
  No symbol table info available.
  #3  0xb6426f02 in __gthread_mutex_lock (__mutex=0x1b34f14)
      at /usr/include/arm-linux-gnueabihf/c++/4.9/bits/gthr-default.h:748
  No locals.
  #4  lock (this=0x1b34f14) at /usr/include/c++/4.9/mutex:135
  No locals.
  #5  lock_guard (__m=..., this=0xb0dfeaf0) at /usr/include/c++/4.9/mutex:377
  No locals.
  #6  mir::graphics::android::Display::configuration (this=0x1b34ef8)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/platforms/android/server/display.cpp:231
          lock = {_M_device = @0x1b34f14}
  #7  0xb6e656ca in mir::shell::GraphicsDisplayLayout::place_in_output (this=<optimized out>, id=..., 
      rect=...)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/server/shell/graphics_display_layout.cpp:72
          config = std::unique_ptr<mir::graphics::DisplayConfiguration> containing 0xb6eb69c8
          placed = false
  #8  0xb6e6a888 in mir::shell::SystemCompositorWindowManager::add_display (this=0x1d07b24)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/server/shell/system_compositor_window_manager.cpp:1        output_id = <optimized out>
          rect = {top_left = {x = {value = 0}, y = {value = 0}}, size = {width = {value = 768}, height = {
                value = 1280}}}
          surface = std::shared_ptr (count 3, weak 4) 0x0
          __for_range = <optimized out>
          lock = {_M_device = @0x1d07b3c}
  #9  0xb6e1ab32 in operator() (buffer=..., __closure=<optimized out>)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/server/compositor/multi_threaded_compositor.cpp:96
  No locals.
  #10 std::_Function_handler<void (mir::graphics::DisplayBuffer&), mir::compositor::CompositingFunctor::operator()()::{lambda()#2}::operator()() const::{lambda(mir::graphics::DisplayBuffer&)#1}>::_M_invoke(std::_Any_data const&, mir::graphics::DisplayBuffer&) (__functor=..., __args#0=...)
      at /usr/include/c++/4.9/functional:2039
  No locals.
  #11 0xb64288a8 in operator() (__args#0=..., this=0xb0dfeca0) at /usr/include/c++/4.9/functional:2439
  No locals.
  #12 mir::graphics::android::DisplayGroup::for_each_display_buffer(std::function<void (mir::graphics::DisplayBuffer&)> const&) (this=0x1b35024, f=...)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/platforms/android/server/display_group.cpp:51
          __for_range = std::map with 1 elements = {
            [mir::graphics::android::DisplayName::primary] = std::unique_ptr<mir::graphics::android::ConfigurableDisplayBuffer> containing 0x1c0db40}
          lk = {_M_device = 0x1b35028, _M_owns = true}
  #13 0xb6e1b896 in operator() (__closure=<optimized out>)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/server/compositor/multi_threaded_compositor.cpp:96
  No locals.
  #14 PairedCalls (deleter=<optimized out>, creator=<optimized out>, this=0xb0dfec84)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/include/common/mir/raii.h:33
  No locals.
  #15 paired_calls<mir::compositor::CompositingFunctor::operator()()::<lambda()>, mir::compositor::CompositingFunctor::operator()()::<lambda()> > (deleter=<optimized out>, creator=<optimized out>)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/include/common/mir/raii.h:66
  No locals.
  #16 mir::compositor::CompositingFunctor::operator() (this=0x1d112d8)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/server/compositor/multi_threaded_compositor.cpp:98
          disp_listener = std::shared_ptr (count 5, weak 2) 0x1d07aac
          display_registration = {deleter = {__this = 0x1d112d8, 
              __disp_listener = std::shared_ptr (count 5, weak 2) 0x1d07aac}, owner = true}
          compositor_registration = <optimized out>
          compositors = std::vector of length 1, capacity 1 = {std::tuple containing = {[1] = 0x1c0db40, 
              [2] = std::unique_ptr<mir::compositor::DisplayBufferCompositor> containing 0xb0499848}}
          lock = {_M_device = 0xb0402c44, _M_owns = true}
  #17 0xb6e8aa58 in operator() (this=0xb0dfed84) at /usr/include/c++/4.9/functional:2439
  No locals.
  #18 execute (this=0xb0dfed84)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/server/thread/basic_thread_pool.cpp:40
  No locals.
  #19 operator() (this=0x1d1ce88)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/server/thread/basic_thread_pool.cpp:91
          task = {
            task = {<std::_Maybe_unary_or_binary_function<void>> = {<No data fields>}, <std::_Function_base> = {static _M_max_size = 8, static _M_max_align = 4, _M_functor = {_M_unused = {_M_object = 0x1d112d8, 
                    _M_const_object = 0x1d112d8, _M_function_pointer = 0x1d112d8,38
                    _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x1d112d8}, _M_pod_data = "\330\022\321\001\000\000\000"}, 
                _M_manager = 0xb6e1ab91 <std::_Function_base::_Ref_manager<mir::compositor::CompositingFunctor>::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)>}, 
              _M_invoker = 0xb6e1bf3d <std::_Function_handler<void (), std::reference_wrapper<mir::compositor::CompositingFunctor> >::_M_invoke(std::_Any_data const&)>}, promise = {
              _M_future = std::shared_ptr (count 2, weak 0) 0x1d1c7f0, 
              _M_storage = std::unique_ptr<std::__future_base::_Result<void>> containing 0x1d0ae90}, 
            task_exception = {_M_exception_object = 0x0}}
          lock = {_M_device = 0x1d1ceb4, _M_owns = false}
  #20 __invoke<(anonymous namespace)::Worker> (__f=...) at /usr/include/c++/4.9/functional:202
  No locals.
  #21 operator()<> (this=<optimized out>) at /usr/include/c++/4.9/functional:435
  No locals.
  #22 _M_invoke<> (this=<optimized out>) at /usr/include/c++/4.9/functional:1700
  No locals.
  #23 operator() (this=<optimized out>) at /usr/include/c++/4.9/functional:1688
  No locals.
  #24 std::thread::_Impl<std::_Bind_simple<std::reference_wrapper<(anonymous namespace)::Worker>()> >::_M_run(void) (this=<optimized out>) at /usr/include/c++/4.9/thread:115
  No locals.
  #25 0xb6c332a0 in ?? () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
  No symbol table info available.
  #26 0xb6ccd490 in start_thread () from /lib/arm-linux-gnueabihf/libpthread.so.0
  No symbol table info available.
  #27 0xb6b27c4c in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
  No symbol table info available.
  Backtrace stopped: previous frame identical to this frame (corrupt stack?)

  #0  0xb6cd5d44 in __libc_do_syscall () from /lib/arm-linux-gnueabihf/libpthread.so.0
  No symbol table info available.
  #1  0xb6cd395c in __lll_lock_wait () from /lib/arm-linux-gnueabihf/libpthread.so.0
  No symbol table info available.
  #2  0xb6ccf19e in pthread_mutex_lock () from /lib/arm-linux-gnueabihf/libpthread.so.0
  No symbol table info available.
  #3  0xb642887e in __gthread_mutex_lock (__mutex=0x1b35028)
      at /usr/include/arm-linux-gnueabihf/c++/4.9/bits/gthr-default.h:748
  No locals.
  #4  lock (this=0x1b35028) at /usr/include/c++/4.9/mutex:135
  No locals.
  #5  lock (this=0xafbfe9a4) at /usr/include/c++/4.9/mutex:474
  No locals.
  #6  unique_lock (__m=..., this=0xafbfe9a4) at /usr/include/c++/4.9/mutex:406
  No locals.
  #7  mir::graphics::android::DisplayGroup::for_each_display_buffer(std::function<void (mir::graphics::DisplayBuffer&)> const&) (this=0x1b35024, f=...)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/platforms/android/server/display_group.cpp:48
          lk = {_M_device = 0x1b35028, _M_owns = false}
  #8  0xb6de02c0 in operator() (group=..., __closure=<optimized out>)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/server/input/display_input_region.cpp:70
  No locals.
  #9  std::_Function_handler<void(mir::graphics::DisplaySyncGroup&), mir::input::DisplayInputRegion::confine(mir::geometry::Point&)::<lambda(mir::graphics::DisplaySyncGroup&)> >::_M_invoke(const std::_Any_data &, mir::graphics::DisplaySyncGroup &) (__functor=..., __args#0=...)
      at /usr/include/c++/4.9/functional:2039
  No locals.
  #10 0xb64258ee in operator() (__args#0=..., this=0xafbfea10) at /usr/include/c++/4.9/functional:2439
  No locals.
  #11 mir::graphics::android::Display::for_each_display_sync_group(std::function<void (mir::graphics::DisplaySyncGroup&)> const&) (this=0x1b34ef8, f=...)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/platforms/android/server/display.cpp:226
          lock = {_M_device = @0x1b34f14}
  #12 0xb6de04ae in mir::input::DisplayInputRegion::confine (this=<optimized out>, point=...)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/server/input/display_input_region.cpp:71
          rectangles = {rectangles = std::vector of length 0, capacity 0, bounding_rectangle_ = {
              top_left = {x = {value = 0}, y = {value = 0}}, size = {width = {value = 0}, height = {
                  value = 0}}}}
  #13 0xb6de37e0 in mir::input::Seat::update_cursor (this=this@entry=0x1d09078, 
      event=event@entry=0xaf217308)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/server/input/seat.cpp:193
          movement = <optimized out>
  #14 0xb6de3d0c in mir::input::Seat::update_seat_properties (this=0x1d09078, 
      event=event@entry=0xaf217308)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/server/input/seat.cpp:106
          pointer = 0xaf217308
          id = 5
          stored_data = {<std::__detail::_Node_iterator_base<std::pair<long long const, mir::input::Seat::DeviceData>, false>> = {_M_cur = 0xaf213908}, <No data fields>}
          __PRETTY_FUNCTION__ = "void mir::input::Seat::update_seat_properties(const MirInputEvent*)
  #15 0xb6ddb2c0 in mir::input::DefaultInputDeviceHub::RegisteredDevice::handle_input (this=0xaf2138b8, 
      event=...)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/server/input/default_input_device_hub.cpp:171
          type = <optimized out>
          __PRETTY_FUNCTION__ = "virtual void mir::input::DefaultInputDeviceHub::RegisteredDevice::handle_input(MirEvent&)"
          input_event = 0xaf217308
  #16 0xb1fe3c90 in mir::input::evdev::LibInputDevice::process_event (this=0xaf213770, 
      event=event@entry=0xaf20c5c0)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/platforms/evdev/libinput_device.cpp:93
  No locals.
  #17 0xb1fe6fbe in mir::input::evdev::Platform::process_input_events (this=0x1d0bc28)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/platforms/evdev/platform.cpp:123
          ev = std::unique_ptr<libinput_event> containing 0xaf20c5c0
          dev = <optimized out>
          status = <optimized out>
          __PRETTY_FUNCTION__ = "void mir::input::evdev::Platform::process_input_events()"
          next_event = {lilib = 0x1d0bad8}
  #18 0xb6d5c714 in operator() (this=<optimized out>) at /usr/include/c++/4.9/functional:2439
  No locals.
  #19 mir::dispatch::ReadableFd::dispatch (this=<optimized out>, events=<optimized out>)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/common/dispatch/readable_fd.cpp:38
          events = <optimized out>
          this = <optimized out>
  #20 0xb6d5a6cc in mir::dispatch::MultiplexingDispatchable::dispatch (this=<optimized out>, 
      events=<optimized out>)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/common/dispatch/multiplexing_dispatchable.cpp:210
          source = std::shared_ptr (count 3, weak 0) 0x1d0b35c
          rearm_source = true
          event = {events = 1, data = {ptr = 0xaf2004d8, fd = -1356856104, u32 = 2938111192, 
              u64 = 2938111192}}
          __PRETTY_FUNCTION__ = "virtual bool mir::dispatch::MultiplexingDispatchable::dispatch(mir::dispatch::FdEvents)"
  #21 0xb6d5a6cc in mir::dispatch::MultiplexingDispatchable::dispatch (this=<optimized out>, 
      events=<optimized out>)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/common/dispatch/multiplexing_dispatchable.cpp:210
          source = std::shared_ptr (count 3, weak 0) 0x1d0b09c
          rearm_source = true
          event = {events = 1, data = {ptr = 0xaf20c0a8, fd = -1356808024, u32 = 2938159272, 
              u64 = 2938159272}}
          __PRETTY_FUNCTION__ = "virtual bool mir::dispatch::MultiplexingDispatchable::dispatch(mir::dispatch::FdEvents)"
  #22 0xb6d5a6cc in mir::dispatch::MultiplexingDispatchable::dispatch (this=<optimized out>, 
      events=<optimized out>)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/common/dispatch/multiplexing_dispatchable.cpp:210
          source = std::shared_ptr (count 10, weak 1) 0x1d08914
          rearm_source = false
          event = {events = 1, data = {ptr = 0x1d0fd90, fd = 30473616, u32 = 30473616, u64 = 30473616}}
          __PRETTY_FUNCTION__ = "virtual bool mir::dispatch::MultiplexingDispatchable::dispatch(mir::dispatch::FdEvents)"
  #23 0xb6d5ce5a in (anonymous namespace)::dispatch_loop(const std::string &, std::shared_ptr<mir::dispatch::ThreadedDispatcher::ThreadShutdownRequestHandler>, std::shared_ptr<mir::dispatch::Dispatchable>, const std::function<void()> &) (name=..., thread_register=..., 
      dispatcher=std::shared_ptr (count 2, weak 0) 0x1d0fd24, exception_handler=...)
      at /build/mir-ua35pY/mir-0.19.0+15.04.20160126.1/src/common/dispatch/threaded_dispatcher.cpp:211
          waiter = {fd = 61, events = 1, revents = 1}
          running = true
          thread_registrar = {deleter = {
              __thread_register = std::shared_ptr (count 4, weak 0) 0x1d0fc70}, owner = true}
          __PRETTY_FUNCTION__ = "void {anonymous}::dispatch_loop(const string&, std::shared_ptr<mir::dispatch::ThreadedDispatcher::ThreadShutdownRequestHandler>, std::shared_ptr<mir::dispatch::Dispatchable>, const std::function<void("...
  #24 0xb6d5ddf2 in _M_invoke<0u, 1u, 2u, 3u> (this=<optimized out>)
      at /usr/include/c++/4.9/functional:1700
  No locals.
  #25 operator() (this=<optimized out>) at /usr/include/c++/4.9/functional:1688
  No locals.
  #26 std::thread::_Impl<std::_Bind_simple<void (*(std::string, std::shared_ptr<mir::dispatch::ThreadedDispatcher::ThreadShutdownRequestHandler>, std::shared_ptr<mir::dispatch::MultiplexingDispatchable>, std::function<void ()>))(std::string const&, std::shared_ptr<mir::dispatch::ThreadedDispatcher::ThreadShutdownRequestHandler>, std::shared_ptr<mir::dispatch::Dispatchable>, std::function<void ()> const&)> >::_M_run()
      (this=<optimized out>) at /usr/include/c++/4.9/thread:115
  No locals.
  #27 0xb6c332a0 in ?? () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
  No symbol table info available.
  #28 0xb6ccd490 in start_thread () from /lib/arm-linux-gnueabihf/libpthread.so.0
  No symbol table info available.
  #29 0xb6b27c4c in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
  No symbol table info available.
  Backtrace stopped: previous frame identical to this frame (corrupt stack?)

To manage notifications about this bug go to:
https://bugs.launchpad.net/canonical-pocket-desktop/+bug/1538632/+subscriptions


References