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::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::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 lock(observer_guard); #7 0x00007f08e0212820 in mir::input::DefaultInputDeviceHub::add_device(std::shared_ptr 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 const&)::$_1>::_M_invoke(std::_Any_data const&, mir::input::Device*&&) (__functor=..., __args=) at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/functional:1731 #9 0x00007f08e020cef8 in std::function::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, (__gnu_cxx::_Lock_policy)2>' warning: RTTI symbol not found for class 'std::_Sp_counted_ptr_inplace, (__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, (__gnu_cxx::_Lock_policy)2>' warning: RTTI symbol not found for class 'std::_Sp_counted_ptr_inplace, (__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 lock(observer_guard); #13 0x00007f08e0212b67 in mir::input::DefaultInputDeviceHub::add_device(std::shared_ptr const&)::$_2::operator()() const (this=0x7f08c800fee0) at /home/alan/display_server/mir/src/server/input/default_input_device_hub.cpp:92 This