Mir

Comment 3 for bug 1661151

This is the cause...

#0 __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1 0x00007f08e1a65ebd in __GI___pthread_mutex_lock (mutex=0x2823fd0) at ../nptl/pthread_mutex_lock.c:80
#2 0x00007f08e017e8e3 in __gthread_mutex_lock (__mutex=0x2823fd0)
    at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/x86_64-linux-gnu/c++/6.3.0/bits/gthr-default.h:748
#3 0x00007f08e017eaa5 in std::mutex::lock (this=0x2823fd0)
    at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/std_mutex.h:103
#4 0x00007f08e01a387c in std::unique_lock<std::mutex>::lock (this=0x7ffe8ab8edc8)
    at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/std_mutex.h:267
#5 0x00007f08e019ea44 in std::unique_lock<std::mutex>::unique_lock (this=0x7ffe8ab8edc8, __m=...)
    at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/std_mutex.h:197
#6 0x00007f08e0211697 in mir::input::DefaultInputDeviceHub::device_changed (this=0x2823fa0, dev=
    0x7f08c8014f80) at /home/alan/display_server/mir/src/server/input/default_input_device_hub.cpp:338

****************>>> std::unique_lock<std::mutex> lock(observer_guard);

#7 0x00007f08e0212820 in mir::input::DefaultInputDeviceHub::add_device(std::shared_ptr<mir::input::InputDevice> const&)::$_1::operator()(mir::input::Device*) const (this=0x7f08c8015068, d=0x7f08c8014f80)
    at /home/alan/display_server/mir/src/server/input/default_input_device_hub.cpp:78
#8 0x00007f08e02126d2 in std::_Function_handler<void (mir::input::Device*), mir::input::DefaultInputDeviceHub::add_device(std::shared_ptr<mir::input::InputDevice> const&)::$_1>::_M_invoke(std::_Any_data const&, mir::input::Device*&&) (__functor=...,
    __args=<unknown type in cmake-build-debug/bin/../lib/libmirserver.so.44, CU 0x17fea7, DIE 0x1984b4>)
    at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/functional:1731
#9 0x00007f08e020cef8 in std::function<void (mir::input::Device*)>::operator()(mir::input::Device*) const
    (this=0x7f08c8015068, __args=0x7f08c8014f80)
    at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/functional:2127
#10 0x00007f08e020b11b in mir::input::DefaultDevice::apply_pointer_configuration (this=0x7f08c8014f80,
    conf=...) at /home/alan/display_server/mir/src/server/input/default_device.cpp:136
#11 0x00007f08e091988b in mir::examples::InputDeviceConfig::device_added (this=0x2788a10, device=warning: RTTI symbol not found for class 'std::_Sp_counted_ptr_inplace<mir::input::DefaultDevice, std::allocator<mir::input::DefaultDevice>, (__gnu_cxx::_Lock_policy)2>'
warning: RTTI symbol not found for class 'std::_Sp_counted_ptr_inplace<mir::input::DefaultDevice, std::allocator<mir::input::DefaultDevice>, (__gnu_cxx::_Lock_policy)2>'

std::shared_ptr (count 3, weak 0) 0x7f08c8014f80)
    at /home/alan/display_server/mir/examples/server_example_input_device_config.cpp:187
#12 0x00007f08e0211136 in mir::input::DefaultInputDeviceHub::add_device_handle (this=0x2823fa0, handle=warning: RTTI symbol not found for class 'std::_Sp_counted_ptr_inplace<mir::input::DefaultDevice, std::allocator<mir::input::DefaultDevice>, (__gnu_cxx::_Lock_policy)2>'
warning: RTTI symbol not found for class 'std::_Sp_counted_ptr_inplace<mir::input::DefaultDevice, std::allocator<mir::input::DefaultDevice>, (__gnu_cxx::_Lock_policy)2>'
std::shared_ptr (count 3, weak 0) 0x7f08c8014f80)
    at /home/alan/display_server/mir/src/server/input/default_input_device_hub.cpp:282

****************>>> has lock on std::unique_lock<std::mutex> lock(observer_guard);

#13 0x00007f08e0212b67 in mir::input::DefaultInputDeviceHub::add_device(std::shared_ptr<mir::input::InputDevice> const&)::$_2::operator()() const (this=0x7f08c800fee0)
    at /home/alan/display_server/mir/src/server/input/default_input_device_hub.cpp:92

This