Deadlock in default window manager when Ctrl+Alt+Backspace with a client connected

Bug #1628482 reported by Andreas Pokorny
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MirAL
Fix Released
High
Alan Griffiths

Bug Description

# bin/miral-shell --arw-file -f /tmp/mir_socket --vt 1

# export GDK_BACKEND=mir
# export MIR_HOST_SOCKET=/tmp/mir_socket
# gedit

Switch to the virtual terminal of miral then press Ctrl+Alt+Backspace

This results in a dead lock:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007f7e23daf9cd in pthread_join (threadid=140179578386176,
    thread_return=0x0) at pthread_join.c:90
90 pthread_join.c: No such file or directory.
(gdb) thread apply all bt full

Thread 8 (Thread 0x7f7e19f97700 (LWP 2352)):
#0 __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
No locals.
#1 0x00007f7e23db0efd in __GI___pthread_mutex_lock (mutex=0x556d873e0050) at ../nptl/pthread_mutex_lock.c:80
        __PRETTY_FUNCTION__ = "__pthread_mutex_lock"
        type = 0
        id = <optimized out>
#2 0x0000556d85c6ca73 in __gthread_mutex_lock (__mutex=0x556d873e0050) at /usr/include/x86_64-linux-gnu/c++/6/bits/gthr-default.h:748
No locals.
#3 0x0000556d85c706de in std::mutex::lock (this=0x556d873e0050) at /usr/include/c++/6/bits/std_mutex.h:103
        __e = 32638
#4 0x0000556d85c71118 in std::lock_guard<std::mutex>::lock_guard (this=0x7f7e19f95bd0, __m=...) at /usr/include/c++/6/bits/std_mutex.h:162
No locals.
#5 0x0000556d85c6e124 in TitlebarProvider::find_titlebar_data (this=0x556d873dff90, window=...) at /home/andreas/miral/miral/miral-shell/titlebar_provider.cpp:233
        lock = {_M_device = @0x556d873e0050}
        find = {first = std::weak_ptr (expired, weak 0) 0x7f7e04007f70, second = {titlebar = {_M_b = {_M_p = }},
            on_create = {<std::_Maybe_unary_or_binary_function<void, MirSurface*>> = {<std::unary_function<MirSurface*, void>> = {<No data fields>}, <No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {
                    _M_object = , _M_const_object = , _M_function_pointer = , _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x556d873dff80, this adjustment 140179578379376}, _M_pod_data = "\200\377=\207mU\000\000p\\\371\031~\177\000"},
                _M_manager = <std::get<0ul, TitlebarProvider*, std::default_delete<TitlebarProvider> >(std::tuple<TitlebarProvider*, std::default_delete<TitlebarProvider> > const&)+24>}, _M_invoker =
    <std::unique_ptr<miral::WindowInfo::Self, std::default_delete<miral::WindowInfo::Self> >::get() const+24>}, window = {self = std::shared_ptr (count -15405824, weak 1739491823) 0x556d873dff80}}}
#6 0x0000556d85c6d87b in TitlebarProvider::destroy_titlebar_for (this=0x556d873dff90, window=...) at /home/andreas/miral/miral/miral-shell/titlebar_provider.cpp:138
        data = 0x7f7e19f95c58
#7 0x0000556d85c6a3da in TitlebarWindowManagerPolicy::advise_delete_window (this=0x556d873dff40, window_info=...) at /home/andreas/miral/miral/miral-shell/titlebar_window_manager.cpp:305
No locals.
Python Exception <class 'gdb.error'> There is no member named _M_refcount.:
Python Exception <class 'gdb.error'> There is no member named _M_refcount.:
#8 0x00007f7e251aab54 in miral::BasicWindowManager::remove_surface (this=0x556d873dfdf0, session=, surface=) at /home/andreas/miral/miral/miral/basic_window_manager.cpp:157
        lock = {lock = {_M_device = @0x556d873dfe28}, policy = 0x556d873dff40}
Python Exception <class 'gdb.error'> There is no member named _M_head_impl.:
        info = @0x7f7e04007f60: {self = }
        is_active_window = false
Python Exception <class 'gdb.error'> There is no member named _M_head_impl.:
        session_info = @0x7f7e236df636: {self = }
Python Exception <class 'gdb.error'> There is no member named _M_refcount.:
        parent = {self = }
#9 0x00007f7e237357ac in mir::shell::AbstractShell::destroy_surface(std::shared_ptr<mir::scene::Session> const&, mir::IntWrapper<mir::frontend::detail::SessionsSurfaceIdTag, int>) () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#10 0x00007f7e23763c67 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#11 0x00007f7e236f63ec in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#12 0x00007f7e23734739 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#13 0x00007f7e237062e5 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#14 0x00007f7e2371f3d1 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#15 0x00007f7e2371fa28 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#16 0x00007f7e2375d760 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#17 0x00007f7e2375db87 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#18 0x00007f7e23740e2b in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#19 0x00007f7e2371ec8d in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#20 0x00007f7e2429750f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#21 0x00007f7e23dae70a in start_thread (arg=0x7f7e19f97700) at pthread_create.c:333
        __res = <optimized out>
        pd = 0x7f7e19f97700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140179578386176, 5580441564189973104, 0, 140724163552031, 140179578386880, 140179578386176, -5508599453468173712, -5508480977052870032}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0,
              canceltype = 0}}}
---Type <return> to continue, or q <return> to quit---
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#22 0x00007f7e23ae80ff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
No locals.

Thread 7 (Thread 0x7f7e1a798700 (LWP 2351)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f7e2371eb16 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#2 0x00007f7e2429750f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#3 0x00007f7e23dae70a in start_thread (arg=0x7f7e1a798700) at pthread_create.c:333
        __res = <optimized out>
        pd = 0x7f7e1a798700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140179586778880, 5580441564189973104, 0, 140724163552031, 140179586779584, 140179586778880, -5508602751466186128, -5508480977052870032}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0,
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#4 0x00007f7e23ae80ff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
No locals.

Thread 6 (Thread 0x7f7e1af99700 (LWP 2350)):
#0 __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
No locals.
#1 0x00007f7e23db0efd in __GI___pthread_mutex_lock (mutex=0x556d873dfe28) at ../nptl/pthread_mutex_lock.c:80
        __PRETTY_FUNCTION__ = "__pthread_mutex_lock"
        type = 0
        id = <optimized out>
#2 0x00007f7e251d1a2a in __gthread_mutex_lock (__mutex=0x556d873dfe28) at /usr/include/x86_64-linux-gnu/c++/6/bits/gthr-default.h:748
No locals.
#3 0x00007f7e251d1bfa in std::mutex::lock() (this=0x556d873dfe28) at /usr/include/c++/6/bits/std_mutex.h:103
        __e = 1739491824
#4 0x00007f7e251d2982 in std::lock_guard<std::mutex>::lock_guard(std::mutex&) [clone .lto_priv.349] (this=0x7f7e1af98530, __m=...) at /usr/include/c++/6/bits/std_mutex.h:162
No locals.
Python Exception <class 'gdb.error'> There is no member named _M_head_impl.:
#5 0x00007f7e251a9848 in (anonymous namespace)::Locker::Locker(std::mutex&, std::unique_ptr<miral::WindowManagementPolicy, std::default_delete<miral::WindowManagementPolicy> > const&) [clone .lto_priv.317] (this=0x7f7e1af98530, mutex=..., policy=)
    at /home/andreas/miral/miral/miral/basic_window_manager.cpp:45
No locals.
#6 0x00007f7e251a664c in miral::BasicWindowManager::handle_keyboard_event (this=0x556d873dfdf0, event=0x7f7e0c097400) at /home/andreas/miral/miral/miral/basic_window_manager.cpp:251
        lock = {lock = {_M_device = @0x556d873dfe28}, policy = 0x7f7e2372ee54 <mir::shell::AbstractShell::handle(MirEvent const&)+132>}
#7 0x00007f7e236d7669 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#8 0x00007f7e236d4ed2 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#9 0x00007f7e236d93ed in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#10 0x00007f7e236d0c04 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#11 0x00007f7e1c20977a in mir::input::evdev::LibInputDevice::process_event(libinput_event*) () from /usr/lib/x86_64-linux-gnu/mir/server-platform/input-evdev.so.5
No symbol table info available.
#12 0x00007f7e1c20b745 in mir::input::evdev::Platform::process_input_events() () from /usr/lib/x86_64-linux-gnu/mir/server-platform/input-evdev.so.5
No symbol table info available.
#13 0x00007f7e24579c90 in mir::dispatch::ReadableFd::dispatch(unsigned int) () from /usr/lib/x86_64-linux-gnu/libmircommon.so.6
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#14 0x00007f7e2457607f in mir::dispatch::MultiplexingDispatchable::dispatch(unsigned int) () from /usr/lib/x86_64-linux-gnu/libmircommon.so.6
No symbol table info available.
#15 0x00007f7e2457607f in mir::dispatch::MultiplexingDispatchable::dispatch(unsigned int) () from /usr/lib/x86_64-linux-gnu/libmircommon.so.6
No symbol table info available.
#16 0x00007f7e2457607f in mir::dispatch::MultiplexingDispatchable::dispatch(unsigned int) () from /usr/lib/x86_64-linux-gnu/libmircommon.so.6
No symbol table info available.
#17 0x00007f7e2457c3b2 in ?? () from /usr/lib/x86_64-linux-gnu/libmircommon.so.6
No symbol table info available.
#18 0x00007f7e24578e9e in ?? () from /usr/lib/x86_64-linux-gnu/libmircommon.so.6
No symbol table info available.
#19 0x00007f7e2429750f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#20 0x00007f7e23dae70a in start_thread (arg=0x7f7e1af99700) at pthread_create.c:333
        __res = <optimized out>
        pd = 0x7f7e1af99700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140179595171584, 5580441564189973104, 0, 140724163551359, 140179595172288, 140179595171584, -5508601657860138384, -5508480977052870032}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0,
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#21 0x00007f7e23ae80ff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
No locals.

Thread 5 (Thread 0x7f7e03fff700 (LWP 1908)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f7e2429152c in std::condition_variable::wait(std::unique_lock<std::mutex>&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#2 0x00007f7e247ce8cb in ?? () from /usr/lib/x86_64-linux-gnu/libmirclient.so.9
No symbol table info available.
#3 0x00007f7e247d08f7 in ?? () from /usr/lib/x86_64-linux-gnu/libmirclient.so.9
No symbol table info available.
#4 0x00007f7e247d1269 in mir_connection_release () from /usr/lib/x86_64-linux-gnu/libmirclient.so.9
No symbol table info available.
#5 0x00007f7e251b0cc4 in miral::toolkit::Connection::deleter (connection=0x556d873e6800) at /home/andreas/miral/miral/include/miral/toolkit/connection.h:45
No locals.
#6 0x00007f7e251ac1e4 in std::_Sp_counted_deleter<MirConnection*, void (*)(MirConnection*), std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() (this=0x556d873e7ff0) at /usr/include/c++/6/bits/shared_ptr_base.h:464
No locals.
#7 0x0000556d85c5d5d2 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x556d873e7ff0) at /usr/include/c++/6/bits/shared_ptr_base.h:150
No locals.
#8 0x0000556d85c5c981 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=0x7f7e03ffeca8, __in_chrg=<optimized out>) at /usr/include/c++/6/bits/shared_ptr_base.h:662
No locals.
#9 0x0000556d85c65994 in std::__shared_ptr<MirConnection, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=0x7f7e03ffeca0, __in_chrg=<optimized out>) at /usr/include/c++/6/bits/shared_ptr_base.h:928
No locals.
#10 0x0000556d85c7104e in std::__shared_ptr<MirConnection, (__gnu_cxx::_Lock_policy)2>::reset (this=0x556d873e0078) at /usr/include/c++/6/bits/shared_ptr_base.h:1025
No locals.
#11 0x0000556d85c70728 in miral::toolkit::Connection::reset (this=0x556d873e0078) at /home/andreas/miral/miral/include/miral/toolkit/connection.h:42
No locals.
#12 0x0000556d85c6ce03 in TitlebarProvider::<lambda()>::operator()(void) const (__closure=0x7f7e03ffed90) at /home/andreas/miral/miral/miral-shell/titlebar_provider.cpp:77
        lock = {_M_device = @0x556d873e0050}
        this = 0x556d873dff90
#13 0x0000556d85c6ed42 in std::_Function_handler<void(), TitlebarProvider::stop()::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/6/functional:1740
No locals.
#14 0x0000556d85c721a8 in std::function<void ()>::operator()() const (this=0x7f7e03ffed90) at /usr/include/c++/6/functional:2136
No locals.
#15 0x0000556d85c6e46b in Worker::do_work (this=0x556d873dff90) at /home/andreas/miral/miral/miral-shell/titlebar_provider.cpp:266
        work = {<std::_Maybe_unary_or_binary_function<void>> = {<No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x556d873dff90, _M_const_object = 0x556d873dff90,
                _M_function_pointer = 0x556d873dff90, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x556d873dff90, this adjustment 7471060500018949376}, _M_pod_data = "\220\377=\207mU\000\000\000\355\024\377\360\211\256g"},
---Type <return> to continue, or q <return> to quit---
            _M_manager = 0x556d85c6ed45 <std::_Function_base::_Base_manager<TitlebarProvider::stop()::<lambda()> >::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation)>},
          _M_invoker = 0x556d85c6ed22 <std::_Function_handler<void(), TitlebarProvider::stop()::<lambda()> >::_M_invoke(const std::_Any_data &)>}
#16 0x0000556d85c6e57d in Worker::<lambda()>::operator()(void) const (__closure=0x7f7e080008c8) at /home/andreas/miral/miral/miral-shell/titlebar_provider.cpp:279
        this = 0x556d873dff90
#17 0x0000556d85c706b0 in std::_Bind_simple<Worker::start_work()::<lambda()>()>::_M_invoke<>(std::_Index_tuple<>) (this=0x7f7e080008c8) at /usr/include/c++/6/functional:1400
No locals.
#18 0x0000556d85c7063a in std::_Bind_simple<Worker::start_work()::<lambda()>()>::operator()(void) (this=0x7f7e080008c8) at /usr/include/c++/6/functional:1389
No locals.
#19 0x0000556d85c7060a in std::thread::_State_impl<std::_Bind_simple<Worker::start_work()::<lambda()>()> >::_M_run(void) (this=0x7f7e080008c0) at /usr/include/c++/6/thread:196
No locals.
#20 0x00007f7e2429750f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#21 0x00007f7e23dae70a in start_thread (arg=0x7f7e03fff700) at pthread_create.c:333
        __res = <optimized out>
        pd = 0x7f7e03fff700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140179209713408, 5580441564189973104, 0, 140179559439263, 140179209714112, 140179209713408, -5508551096431388048, -5508480977052870032}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0,
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#22 0x00007f7e23ae80ff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
No locals.

Thread 4 (Thread 0x7f7e19796700 (LWP 1906)):
#0 0x00007f7e23adc10d in poll () at ../sysdeps/unix/syscall-template.S:84
No locals.
#1 0x00007f7e2457c39c in ?? () from /usr/lib/x86_64-linux-gnu/libmircommon.so.6
No symbol table info available.
#2 0x00007f7e24578e9e in ?? () from /usr/lib/x86_64-linux-gnu/libmircommon.so.6
No symbol table info available.
#3 0x00007f7e2429750f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#4 0x00007f7e23dae70a in start_thread (arg=0x7f7e19796700) at pthread_create.c:333
        __res = <optimized out>
        pd = 0x7f7e19796700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140179569993472, 5580441564189973104, 0, 140724163551135, 140179569994176, 140179569993472, -5508600551369188752, -5508480977052870032}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0,
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#5 0x00007f7e23ae80ff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
No locals.

Thread 3 (Thread 0x7f7e1b79a700 (LWP 1902)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f7e2429152c in std::condition_variable::wait(std::unique_lock<std::mutex>&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#2 0x00007f7e23718ba1 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#3 0x00007f7e2376c2b9 in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#4 0x00007f7e2429750f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#5 0x00007f7e23dae70a in start_thread (arg=0x7f7e1b79a700) at pthread_create.c:333
---Type <return> to continue, or q <return> to quit---
        __res = <optimized out>
        pd = 0x7f7e1b79a700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140179603564288, 5580441564189973104, 0, 140724163552127, 140179603564992, 140179603564288, -5508604955858150800, -5508480977052870032}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0,
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#6 0x00007f7e23ae80ff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
No locals.

Thread 2 (Thread 0x7f7e1cc16700 (LWP 1901)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1 0x00007f7e2429152c in std::condition_variable::wait(std::unique_lock<std::mutex>&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#2 0x00007f7e236f264b in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#3 0x00007f7e2429750f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#4 0x00007f7e23dae70a in start_thread (arg=0x7f7e1cc16700) at pthread_create.c:333
        __res = <optimized out>
        pd = 0x7f7e1cc16700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140179625043712, 5580441564189973104, 0, 140724163551135, 140179625044416, 140179625043712, -5508588937777620368, -5508480977052870032}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0,
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#5 0x00007f7e23ae80ff in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
No locals.

Thread 1 (Thread 0x7f7e255ce7c0 (LWP 1900)):
#0 0x00007f7e23daf9cd in pthread_join (threadid=140179578386176, thread_return=0x0) at pthread_join.c:90
        __tid = 2352
        _buffer = {__routine = 0x7f7e23daf8f0 <cleanup>, __arg = 0x7f7e19f97d28, __canceltype = 1, __prev = 0x0}
        oldtype = 0
        pd = 0x7f7e19f97700
        self = 0x7f7e255ce7c0
        result = 0
#1 0x00007f7e242977b7 in std::thread::join() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#2 0x00007f7e237409fa in ?? () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#3 0x00007f7e236b36ba in mir::run_mir(mir::ServerConfiguration&, std::function<void (mir::DisplayServer&)>, std::function<void (int)> const&) () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#4 0x00007f7e236c1026 in mir::Server::run() () from /usr/lib/x86_64-linux-gnu/libmirserver.so.41
No symbol table info available.
#5 0x00007f7e251cb762 in run_with (this=0x556d8714ed40, options=...) at /home/andreas/miral/miral/miral/runner.cpp:217
        main_loop = {<No data fields>}
        server = {<No data fields>}
#6 0x00007f7e251cbc1e in miral::MirRunner::run_with(std::initializer_list<std::function<void (mir::Server&)> >) (this=0x7ffce5c7a920, options=...) at /home/andreas/miral/miral/miral/runner.cpp:266
No locals.
#7 0x0000556d85c5bf23 in main (argc=8, argv=0x7ffce5c7acc8) at /home/andreas/miral/miral/miral-shell/shell_main.cpp:78
        spinner = {self = std::shared_ptr (count 4, weak 0) 0x556d8714eb50}
        launcher = {self = warning: RTTI symbol not found for class 'std::_Sp_counted_ptr_inplace<miral::InternalClientLauncher::Self, std::allocator<miral::InternalClientLauncher::Self>, (__gnu_cxx::_Lock_policy)2>'
warning: RTTI symbol not found for class 'std::_Sp_counted_ptr_inplace<miral::InternalClientLauncher::Self, std::allocator<miral::InternalClientLauncher::Self>, (__gnu_cxx::_Lock_policy)2>'
std::shared_ptr (count 3, weak 0) 0x556d8714eba0}
        outputs_monitor = {self = warning: RTTI symbol not found for class 'std::_Sp_counted_ptr_inplace<miral::ActiveOutputsMonitor::Self, std::allocator<miral::ActiveOutputsMonitor::Self>, (__gnu_cxx::_Lock_policy)2>'
warning: RTTI symbol not found for class 'std::_Sp_counted_ptr_inplace<miral::ActiveOutputsMonitor::Self, std::allocator<miral::ActiveOutputsMonitor::Self>, (__gnu_cxx::_Lock_policy)2>'
std::shared_ptr (count 4, weak 1) 0x556d8714ebd0}
---Type <return> to continue, or q <return> to quit---
        window_managers = {policies = std::vector of length 2, capacity 2 = {{name = "titlebar",
              build = {<std::_Maybe_unary_or_binary_function<std::unique_ptr<miral::WindowManagementPolicy, std::default_delete<miral::WindowManagementPolicy> >, miral::WindowManagerTools const&>> = {<std::unary_function<miral::WindowManagerTools const&, std::unique_ptr<miral::WindowManagementPolicy, std::default_delete<miral::WindowManagementPolicy> > >> = {<No data fields>}, <No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x7ffce5c7a940, _M_const_object = 0x7ffce5c7a940,
                      _M_function_pointer = 0x7ffce5c7a940, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x7ffce5c7a940, this adjustment 140724163553616}, _M_pod_data = "@\251\307\345\374\177\000\000P\251\307\345\374\177\000"},
                  _M_manager = 0x556d85c5f0d3 <std::_Function_base::_Base_manager<miral::WindowManagerOption miral::add_window_manager_policy<TitlebarWindowManagerPolicy, SpinnerSplash, miral::InternalClientLauncher>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SpinnerSplash&, miral::InternalClientLauncher&)::{lambda(miral::WindowManagerTools const&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<miral::WindowManagerOption miral::add_window_manager_policy<TitlebarWindowManagerPolicy, SpinnerSplash, miral::InternalClientLauncher>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SpinnerSplash&, miral::InternalClientLauncher&)::{lambda(miral::WindowManagerTools const&)#1}> const&, std::_Manager_operation)>},
                _M_invoker = 0x556d85c5f060 <std::_Function_handler<std::unique_ptr<miral::WindowManagementPolicy, std::default_delete<miral::WindowManagementPolicy> > (miral::WindowManagerTools const&), miral::WindowManagerOption miral::add_window_manager_policy<TitlebarWindowManagerPolicy, SpinnerSplash, miral::InternalClientLauncher>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SpinnerSplash&, miral::InternalClientLauncher&)::{lambda(miral::WindowManagerTools const&)#1}>::_M_invoke(std::_Any_data const&, miral::WindowManagerTools const&)>}}, {name = "tiling",
              build = {<std::_Maybe_unary_or_binary_function<std::unique_ptr<miral::WindowManagementPolicy, std::default_delete<miral::WindowManagementPolicy> >, miral::WindowManagerTools const&>> = {<std::unary_function<miral::WindowManagerTools const&, std::unique_ptr<miral::WindowManagementPolicy, std::default_delete<miral::WindowManagementPolicy> > >> = {<No data fields>}, <No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x556d8714ecf0, _M_const_object = 0x556d8714ecf0,
                      _M_function_pointer = 0x556d8714ecf0, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x556d8714ecf0}, _M_pod_data = "\360\354\024\207mU\000\000\000\000\000\000\000\000\000"},
                  _M_manager = 0x556d85c5f4f1 <std::_Function_base::_Base_manager<miral::WindowManagerOption miral::add_window_manager_policy<TilingWindowManagerPolicy, SpinnerSplash, miral::InternalClientLauncher, miral::ActiveOutputsMonitor>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SpinnerSplash&, miral::InternalClientLauncher&, miral::ActiveOutputsMonitor&)::{lambda(miral::WindowManagerTools const&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<miral::WindowManagerOption miral::add_window_manager_policy<TilingWindowManagerPolicy, SpinnerSplash, miral::InternalClientLauncher, miral::ActiveOutputsMonitor>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SpinnerSplash&, miral::InternalClientLauncher&, miral::ActiveOutputsMonitor&)::{lambda(miral::WindowManagerTools const&)#1}> const&, std::_Manager_operation)>},
                _M_invoker = 0x556d85c5f47e <std::_Function_handler<std::unique_ptr<miral::WindowManagementPolicy, std::default_delete<miral::WindowManagementPolicy> > (miral::WindowManagerTools const&), miral::WindowManagerOption miral::add_window_manager_policy<TilingWindowManagerPolicy, SpinnerSplash, miral::InternalClientLauncher, miral::ActiveOutputsMonitor>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SpinnerSplash&, miral::InternalClientLauncher&, miral::ActiveOutputsMonitor&)::{lambda(miral::WindowManagerTools const&)#1}>::_M_invoke(std::_Any_data const&, miral::WindowManagerTools const&)>}}}}
        runner = {self = std::unique_ptr<miral::MirRunner::Self> containing 0x556d8714ed40}
        quit_on_ctrl_alt_bksp = {__runner = @0x7ffce5c7a920}
(gdb)

Related branches

Changed in miral:
status: New → In Progress
importance: Undecided → High
assignee: nobody → Alan Griffiths (alan-griffiths)
Changed in miral:
status: In Progress → Fix Committed
Changed in miral:
milestone: none → 0.2
Changed in miral:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.