With an intel GPU, Mir trunk, latest wily, moving the client window between screens causes the nested server to crash soon after (although not immediately). The backtrace I get is:
#0 0x00007ffff7089267 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55
#1 0x00007ffff708aeca in __GI_abort () at abort.c:89
#2 0x00007ffff70ccc53 in __libc_message (do_abort=do_abort@entry=1,
fmt=fmt@entry=0x7ffff71e51a8 "*** Error in `%s': %s: 0x%s ***\n")
at ../sysdeps/posix/libc_fatal.c:175
#3 0x00007ffff70d4c69 in malloc_printerr (ptr=<optimized out>,
str=0x7ffff71e12fa "free(): invalid pointer", action=1) at malloc.c:4965
#4 _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) at malloc.c:3834
#5 0x00007ffff70d889c in __GI___libc_free (mem=<optimized out>) at malloc.c:2950
#6 0x00007fffeba360b9 in _mesa_delete_program (ctx=<optimized out>, prog=0x76fde0)
at ../../../../src/mesa/program/program.c:407
#7 0x00007fffeba3617b in _mesa_reference_program_ (ctx=ctx@entry=0x7ffff7fcf038,
ptr=ptr@entry=0x7b3870, prog=prog@entry=0x0) at ../../../../src/mesa/program/program.c:483
#8 0x00007fffeba18b37 in _mesa_reference_program (prog=0x0, ptr=<optimized out>, ctx=0x7ffff7fcf038)
at ../../../../src/mesa/program/program.h:121
#9 _mesa_reference_vertprog (prog=0x0, ptr=<optimized out>, ctx=0x7ffff7fcf038)
at ../../../../src/mesa/program/program.h:129
#10 _mesa_meta_end (ctx=ctx@entry=0x7ffff7fcf038) at ../../../../src/mesa/drivers/common/meta.c:961
#11 0x00007fffeba19448 in meta_clear (ctx=ctx@entry=0x7ffff7fcf038, buffers=buffers@entry=2,
glsl=glsl@entry=true) at ../../../../src/mesa/drivers/common/meta.c:1817
#12 0x00007fffeba1991a in _mesa_meta_glsl_Clear (ctx=ctx@entry=0x7ffff7fcf038, buffers=buffers@entry=2)
at ../../../../src/mesa/drivers/common/meta.c:1502
#13 0x00007fffebb50e4b in brw_clear (ctx=0x7ffff7fcf038, mask=0)
at ../../../../../../../src/mesa/drivers/dri/i965/brw_clear.c:264
#14 0x00007ffff687fe0f in mir::renderer::gl::Renderer::render (this=0x7fffd40008c0,
renderables=std::vector of length 2, capacity 2 = {...})
at /storage/work/mir/src/renderers/gl/renderer.cpp:198
#15 0x00007ffff67eca32 in mir::compositor::DefaultDisplayBufferCompositor::composite(std::vector<std::shared_ptr<mir::compositor::SceneElement>, std::allocator<std::shared_ptr<mir::compositor::SceneElement> > >&&) (this=this@entry=0x7fffd404a250,
scene_elements=scene_elements@entry=<unknown type in /storage/work/mir/build/lib/libmirserver.so.35, CU 0x727f01, DIE 0x7349b4>)
at /storage/work/mir/src/server/compositor/default_display_buffer_compositor.cpp:83
---Type <return> to continue, or q <return> to quit---
#16 0x00007ffff67f3f1c in mir::compositor::CompositingFunctor::operator() (this=0x821c70)
at /storage/work/mir/src/server/compositor/multi_threaded_compositor.cpp:143
#17 0x00007ffff687c261 in std::function<void ()>::operator()() const (this=0x7fffe8b7ee70)
at /usr/include/c++/5/functional:2271
#18 (anonymous namespace)::Task::execute (this=0x7fffe8b7ee70)
at /storage/work/mir/src/server/thread/basic_thread_pool.cpp:40
#19 (anonymous namespace)::Worker::operator() (this=0x821d70)
at /storage/work/mir/src/server/thread/basic_thread_pool.cpp:91
#20 std::__invoke<(anonymous namespace)::Worker> (__f=...) at /usr/include/c++/5/functional:201
#21 std::reference_wrapper<(anonymous namespace)::Worker>::operator()<> (this=<optimized out>)
at /usr/include/c++/5/functional:428
#22 std::_Bind_simple<std::reference_wrapper<(anonymous namespace)::Worker>()>::_M_invoke<> (
this=<optimized out>) at /usr/include/c++/5/functional:1531
#23 std::_Bind_simple<std::reference_wrapper<(anonymous namespace)::Worker>()>::operator() (
this=<optimized out>) at /usr/include/c++/5/functional:1520
#24 std::thread::_Impl<std::_Bind_simple<std::reference_wrapper<(anonymous namespace)::Worker>()> >::_M_run(void) (this=<optimized out>) at /usr/include/c++/5/thread:115
#25 0x00007ffff790c030 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#26 0x00007ffff74256aa in start_thread (arg=0x7fffe8b7f700) at pthread_create.c:333
#27 0x00007ffff715aeed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
With an intel GPU, Mir trunk, latest wily, moving the client window between screens causes the nested server to crash soon after (although not immediately). The backtrace I get is:
#0 0x00007ffff7089267 in __GI_raise (sig=sig@entry=6) at ../sysdeps/ unix/sysv/ linux/raise. c:55 do_abort@ entry=1, fmt@entry= 0x7ffff71e51a8 "*** Error in `%s': %s: 0x%s ***\n") posix/libc_ fatal.c: 175 0x7ffff71e12fa "free(): invalid pointer", action=1) at malloc.c:4965 program (ctx=<optimized out>, prog=0x76fde0) ./../src/ mesa/program/ program. c:407 _program_ (ctx=ctx@ entry=0x7ffff7f cf038, ptr@entry= 0x7b3870, prog=prog@ entry=0x0) at ../../. ./../src/ mesa/program/ program. c:483 _program (prog=0x0, ptr=<optimized out>, ctx=0x7ffff7fcf038) ./../src/ mesa/program/ program. h:121 _vertprog (prog=0x0, ptr=<optimized out>, ctx=0x7ffff7fcf038) ./../src/ mesa/program/ program. h:129 entry=0x7ffff7f cf038) at ../../. ./../src/ mesa/drivers/ common/ meta.c: 961 entry=0x7ffff7f cf038, buffers= buffers@ entry=2, glsl@entry= true) at ../../. ./../src/ mesa/drivers/ common/ meta.c: 1817 glsl_Clear (ctx=ctx@ entry=0x7ffff7f cf038, buffers= buffers@ entry=2) ./../src/ mesa/drivers/ common/ meta.c: 1502 f038, mask=0) ./../.. /../../ src/mesa/ drivers/ dri/i965/ brw_clear. c:264 :gl::Renderer: :render (this=0x7fffd40 008c0, =std::vector of length 2, capacity 2 = {...}) work/mir/ src/renderers/ gl/renderer. cpp:198 ::DefaultDispla yBufferComposit or::composite( std::vector< std::shared_ ptr<mir: :compositor: :SceneElement> , std::allocator< std::shared_ ptr<mir: :compositor: :SceneElement> > >&&) (this=this@ entry=0x7fffd40 4a250, elements= scene_elements@ entry=< unknown type in /storage/ work/mir/ build/lib/ libmirserver. so.35, CU 0x727f01, DIE 0x7349b4>) work/mir/ src/server/ compositor/ default_ display_ buffer_ compositor. cpp:83 ::CompositingFu nctor:: operator( ) (this=0x821c70) work/mir/ src/server/ compositor/ multi_threaded_ compositor. cpp:143 7ee70) c++/5/functiona l:2271 ::Task: :execute (this=0x7fffe8b 7ee70) work/mir/ src/server/ thread/ basic_thread_ pool.cpp: 40 ::Worker: :operator( ) (this=0x821d70) work/mir/ src/server/ thread/ basic_thread_ pool.cpp: 91 invoke< (anonymous namespace)::Worker> (__f=...) at /usr/include/ c++/5/functiona l:201 wrapper< (anonymous namespace) ::Worker> ::operator( )<> (this=<optimized out>) c++/5/functiona l:428 simple< std::reference_ wrapper< (anonymous namespace) ::Worker> ()>::_M_ invoke< > ( c++/5/functiona l:1531 simple< std::reference_ wrapper< (anonymous namespace) ::Worker> ()>::operator( ) ( c++/5/functiona l:1520 :_Impl< std::_Bind_ simple< std::reference_ wrapper< (anonymous namespace) ::Worker> ()> >::_M_run(void) (this=<optimized out>) at /usr/include/ c++/5/thread: 115 x86_64- linux-gnu/ libstdc+ +.so.6 f700) at pthread_ create. c:333 unix/sysv/ linux/x86_ 64/clone. S:109
#1 0x00007ffff708aeca in __GI_abort () at abort.c:89
#2 0x00007ffff70ccc53 in __libc_message (do_abort=
fmt=
at ../sysdeps/
#3 0x00007ffff70d4c69 in malloc_printerr (ptr=<optimized out>,
str=
#4 _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) at malloc.c:3834
#5 0x00007ffff70d889c in __GI___libc_free (mem=<optimized out>) at malloc.c:2950
#6 0x00007fffeba360b9 in _mesa_delete_
at ../../.
#7 0x00007fffeba3617b in _mesa_reference
ptr=
#8 0x00007fffeba18b37 in _mesa_reference
at ../../.
#9 _mesa_reference
at ../../.
#10 _mesa_meta_end (ctx=ctx@
#11 0x00007fffeba19448 in meta_clear (ctx=ctx@
glsl=
#12 0x00007fffeba1991a in _mesa_meta_
at ../../.
#13 0x00007fffebb50e4b in brw_clear (ctx=0x7ffff7fc
at ../../.
#14 0x00007ffff687fe0f in mir::renderer:
renderables
at /storage/
#15 0x00007ffff67eca32 in mir::compositor
scene_
at /storage/
---Type <return> to continue, or q <return> to quit---
#16 0x00007ffff67f3f1c in mir::compositor
at /storage/
#17 0x00007ffff687c261 in std::function<void ()>::operator()() const (this=0x7fffe8b
at /usr/include/
#18 (anonymous namespace)
at /storage/
#19 (anonymous namespace)
at /storage/
#20 std::__
#21 std::reference_
at /usr/include/
#22 std::_Bind_
this=<optimized out>) at /usr/include/
#23 std::_Bind_
this=<optimized out>) at /usr/include/
#24 std::thread:
#25 0x00007ffff790c030 in ?? () from /usr/lib/
#26 0x00007ffff74256aa in start_thread (arg=0x7fffe8b7
#27 0x00007ffff715aeed in clone () at ../sysdeps/