This may not be Unity8 specific. I got a similar lockup in miral-shell.
1. Use mir_demo_shell as a host:
$ sudo mir_demo_server --arw-file --vt 4 --window-manager system-compositor
2. Run miral-shell as a guest:
$ miral-app --host /tmp/mir_socket
3. Start egltriangle & eglplasma and start switching, resizing, maximizing etc. After a while it seems the "RPC thread" starts making blocking calls to the client API.
(gdb) info threads
Id Target Id Frame
* 1 Thread 0x7f1811eafc80 (LWP 4525) "miral-shell" 0x00007f181036e18d in poll () at ../sysdeps/unix/syscall-template.S:84
2 Thread 0x7f180a305700 (LWP 4526) "RPC Thread" pthread_cond_wait@@GLIBC_2.3.2 ()
at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
3 Thread 0x7f1803fff700 (LWP 4532) "Mir/Snapshot" pthread_cond_wait@@GLIBC_2.3.2 ()
at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
4 Thread 0x7f18037fe700 (LWP 4533) "Mir/Comp" pthread_cond_wait@@GLIBC_2.3.2 ()
at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
5 Thread 0x7f1802ffd700 (LWP 4534) "Mir/Input Reade" 0x00007f181036e18d in poll () at ../sysdeps/unix/syscall-template.S:84
6 Thread 0x7f18027fc700 (LWP 4535) "Mir/IPC" pthread_cond_wait@@GLIBC_2.3.2 ()
at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
7 Thread 0x7f1801ffb700 (LWP 4536) "Mir/IPC" pthread_cond_wait@@GLIBC_2.3.2 ()
at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
8 Thread 0x7f18017fa700 (LWP 4537) "RPC Thread" 0x00007f181036e18d in poll () at ../sysdeps/unix/syscall-template.S:84
9 Thread 0x7f1800ff9700 (LWP 4538) "miral-shell" pthread_cond_wait@@GLIBC_2.3.2 ()
at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
(gdb) t 2
[Switching to thread 2 (Thread 0x7f180a305700 (LWP 4526))]
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
185 ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: No such file or directory.
(gdb) bt
#0 0x00007f180f842510 in pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1 0x00007f181090580c in std::condition_variable::wait(std::unique_lock<std::mutex>&) () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#2 0x00007f1810e3c18b in wait () at /usr/include/c++/6/condition_variable:99
#3 0x00007f1810e3c18b in wait_for_result (this=0x7f180a303e00) at ./src/client/mir_render_surface_api.cpp:43
#4 0x00007f1810e3c18b in mir_connection_create_render_surface_sync (connection=<optimised out>, width=<optimised out>, height=<optimised out>) at ./src/client/mir_render_surface_api.cpp:126
#5 0x00007f180ffc4f67 in set_cursor_image (image=..., this=0x55c1dbfb8540)
at ./src/server/graphics/nested/mir_client_host_connection.cpp:177
#6 0x00007f180ffc4f67 in set_cursor_image (this=0x55c1dbd70940, image=...)
at ./src/server/graphics/nested/mir_client_host_connection.cpp:491
#7 0x00007f180ffcc076 in mir::input::CursorController::update_cursor_image_locked(std::unique_lock<std::mutex>&) [clone .constprop.589] (this=this@entry=0x55c1dbe82f10, lock=...) at ./src/server/input/cursor_controller.cpp:248
#8 0x00007f180ff2487c in update_cursor_image (this=0x55c1dbe82f10) at ./src/server/input/cursor_controller.cpp:259
#9 0x00007f180ff3c1c3 in std::function<void (std::shared_ptr<mir::scene::SurfaceObserver> const&)>::operator()(std::shared_ptr<mir::scene::SurfaceObserver> const&) const () at /usr/include/c++/6/functional:2127
#10 0x00007f180ff3c1c3 in for_each (this=<optimised out>, f=...) at ./src/include/common/mir/thread_safe_list.h:81
#11 0x00007f180ff3cf11 in mir::scene::SurfaceObservers::moved_to(mir::geometry::Point const&) (this=<optimised out>, top_left=...)
at ./src/server/scene/basic_surface.cpp:65
#12 0x00007f1811aaf378 in miral::Window::move_to(mir::geometry::Point) (this=<optimised out>, top_left=...) at ./miral/window.cpp:74
#13 0x00007f1811abe071 in miral::BasicWindowManager::move_tree(miral::WindowInfo&, mir::geometry::Displacement) (this=this@entry=0x55c1dbfdf540, root=..., movement=...) at ./miral/basic_window_manager.cpp:807
#14 0x00007f1811abb507 in miral::BasicWindowManager::place_and_size(miral::WindowInfo&, mir::geometry::Point const&, mir::geometry::Size const&) (this=this@entry=0x55c1dbfdf540, root=..., new_pos=..., new_size=...) at ./miral/basic_window_manager.cpp:999
#15 0x00007f1811abe831 in miral::BasicWindowManager::modify_window(miral::WindowInfo&, miral::WindowSpecification const&) (this=0x55c1dbfdf540, window_info=..., modifications=...) at ./miral/basic_window_manager.cpp:933
This may not be Unity8 specific. I got a similar lockup in miral-shell.
1. Use mir_demo_shell as a host:
$ sudo mir_demo_server --arw-file --vt 4 --window-manager system-compositor
2. Run miral-shell as a guest:
$ miral-app --host /tmp/mir_socket
3. Start egltriangle & eglplasma and start switching, resizing, maximizing etc. After a while it seems the "RPC thread" starts making blocking calls to the client API.
(gdb) info threads unix/syscall- template. S:84 cond_wait@ @GLIBC_ 2.3.2 () unix/sysv/ linux/x86_ 64/pthread_ cond_wait. S:185 cond_wait@ @GLIBC_ 2.3.2 () unix/sysv/ linux/x86_ 64/pthread_ cond_wait. S:185 cond_wait@ @GLIBC_ 2.3.2 () unix/sysv/ linux/x86_ 64/pthread_ cond_wait. S:185 unix/syscall- template. S:84 cond_wait@ @GLIBC_ 2.3.2 () unix/sysv/ linux/x86_ 64/pthread_ cond_wait. S:185 cond_wait@ @GLIBC_ 2.3.2 () unix/sysv/ linux/x86_ 64/pthread_ cond_wait. S:185 unix/syscall- template. S:84 cond_wait@ @GLIBC_ 2.3.2 () unix/sysv/ linux/x86_ 64/pthread_ cond_wait. S:185 cond_wait@ @GLIBC_ 2.3.2 () at ../sysdeps/ unix/sysv/ linux/x86_ 64/pthread_ cond_wait. S:185 unix/sysv/ linux/x86_ 64/pthread_ cond_wait. S: No such file or directory. cond_wait@ @GLIBC_ 2.3.2 () at ../sysdeps/ unix/sysv/ linux/x86_ 64/pthread_ cond_wait. S:185 variable: :wait(std: :unique_ lock<std: :mutex> &) () at /usr/lib/ x86_64- linux-gnu/ libstdc+ +.so.6 c++/6/condition _variable: 99 03e00) at ./src/client/ mir_render_ surface_ api.cpp: 43 create_ render_ surface_ sync (connection= <optimised out>, width=<optimised out>, height=<optimised out>) at ./src/client/ mir_render_ surface_ api.cpp: 126 8540) graphics/ nested/ mir_client_ host_connection .cpp:177 70940, image=...) graphics/ nested/ mir_client_ host_connection .cpp:491 :CursorControll er::update_ cursor_ image_locked( std::unique_ lock<std: :mutex> &) [clone .constprop.589] (this=this@ entry=0x55c1dbe 82f10, lock=...) at ./src/server/ input/cursor_ controller. cpp:248 82f10) at ./src/server/ input/cursor_ controller. cpp:259 ptr<mir: :scene: :SurfaceObserve r> const&) >::operator( )(std:: shared_ ptr<mir: :scene: :SurfaceObserve r> const&) const () at /usr/include/ c++/6/functiona l:2127 common/ mir/thread_ safe_list. h:81 :SurfaceObserve rs::moved_ to(mir: :geometry: :Point const&) (this=<optimised out>, top_left=...) scene/basic_ surface. cpp:65 Window: :move_to( mir::geometry: :Point) (this=<optimised out>, top_left=...) at ./miral/ window. cpp:74 BasicWindowMana ger::move_ tree(miral: :WindowInfo& , mir::geometry: :Displacement) (this=this@ entry=0x55c1dbf df540, root=..., movement=...) at ./miral/ basic_window_ manager. cpp:807 BasicWindowMana ger::place_ and_size( miral:: WindowInfo& , mir::geometry: :Point const&, mir::geometry::Size const&) (this=this@ entry=0x55c1dbf df540, root=..., new_pos=..., new_size=...) at ./miral/ basic_window_ manager. cpp:999 BasicWindowMana ger::modify_ window( miral:: WindowInfo& , miral:: WindowSpecifica tion const&) (this=0x55c1dbf df540, window_info=..., modifications=...) at ./miral/ basic_window_ manager. cpp:933
Id Target Id Frame
* 1 Thread 0x7f1811eafc80 (LWP 4525) "miral-shell" 0x00007f181036e18d in poll () at ../sysdeps/
2 Thread 0x7f180a305700 (LWP 4526) "RPC Thread" pthread_
at ../sysdeps/
3 Thread 0x7f1803fff700 (LWP 4532) "Mir/Snapshot" pthread_
at ../sysdeps/
4 Thread 0x7f18037fe700 (LWP 4533) "Mir/Comp" pthread_
at ../sysdeps/
5 Thread 0x7f1802ffd700 (LWP 4534) "Mir/Input Reade" 0x00007f181036e18d in poll () at ../sysdeps/
6 Thread 0x7f18027fc700 (LWP 4535) "Mir/IPC" pthread_
at ../sysdeps/
7 Thread 0x7f1801ffb700 (LWP 4536) "Mir/IPC" pthread_
at ../sysdeps/
8 Thread 0x7f18017fa700 (LWP 4537) "RPC Thread" 0x00007f181036e18d in poll () at ../sysdeps/
9 Thread 0x7f1800ff9700 (LWP 4538) "miral-shell" pthread_
at ../sysdeps/
(gdb) t 2
[Switching to thread 2 (Thread 0x7f180a305700 (LWP 4526))]
#0 pthread_
185 ../sysdeps/
(gdb) bt
#0 0x00007f180f842510 in pthread_
#1 0x00007f181090580c in std::condition_
#2 0x00007f1810e3c18b in wait () at /usr/include/
#3 0x00007f1810e3c18b in wait_for_result (this=0x7f180a3
#4 0x00007f1810e3c18b in mir_connection_
#5 0x00007f180ffc4f67 in set_cursor_image (image=..., this=0x55c1dbfb
at ./src/server/
#6 0x00007f180ffc4f67 in set_cursor_image (this=0x55c1dbd
at ./src/server/
#7 0x00007f180ffcc076 in mir::input:
#8 0x00007f180ff2487c in update_cursor_image (this=0x55c1dbe
#9 0x00007f180ff3c1c3 in std::function<void (std::shared_
#10 0x00007f180ff3c1c3 in for_each (this=<optimised out>, f=...) at ./src/include/
#11 0x00007f180ff3cf11 in mir::scene:
at ./src/server/
#12 0x00007f1811aaf378 in miral::
#13 0x00007f1811abe071 in miral::
#14 0x00007f1811abb507 in miral::
#15 0x00007f1811abe831 in miral::