Public bug reported:

Xmir freezes in mir_buffer_stream_get_graphics_region() from
xmir_input_set_cursor()

Seems to happen a lot when testing Firefox and Chrome when
entering/leaving the address bar...

(gdb) bt
#0  pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f5ea91e3c5c in 
std::condition_variable::wait(std::unique_lock<std::mutex>&) () from 
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
#2  0x00007f5eac25b6b2 in 
std::condition_variable::wait<mir::client::PromiseStateBase<std::shared_ptr<mir::client::MirBuffer>
 
>::ReadLock::ReadLock(mir::client::PromiseStateBase<std::shared_ptr<mir::client::MirBuffer>
 >&)::{lambda()#1}>(std::unique_lock<std::mutex>&, 
mir::client::PromiseStateBase<std::shared_ptr<mir::client::MirBuffer> 
>::ReadLock::ReadLock(mir::client::PromiseStateBase<std::shared_ptr<mir::client::MirBuffer>
 >&)::{lambda()#1}) ()
    at /usr/include/c++/6/condition_variable:99
#3  __base_ctor  (parent=..., this=0x7fff74877420)
    at ./src/client/no_tls_future-inl.h:136
#4  mir::client::PromiseStateBase<std::shared_ptr<mir::client::MirBuffer> 
>::ensure_read_context() () at ./src/client/no_tls_future-inl.h:152
#5  get_value (this=0x55de6688f830) at ./src/client/no_tls_future-inl.h:223
#6  get (this=0x7f5e9c008160) at ./src/client/no_tls_future-inl.h:354
#7  
mir::client::BufferDepository::advance_current_buffer(std::unique_lock<std::mutex>&)
 (this=this@entry=0x7f5e9c008160, lk=...)
    at ./src/client/buffer_stream.cpp:166
#8  0x00007f5eac25f9ed in current_buffer_id (this=<optimised out>)
    at ./src/client/buffer_stream.cpp:183
#9  get_current_buffer (this=0x7f5e9c007f40)
    at ./src/client/buffer_stream.cpp:400
#10 0x00007f5eac25f517 in secure_for_cpu_write (this=0x7f5e9c007f40)
    at ./src/client/buffer_stream.cpp:419
#11 0x00007f5eac263f28 in mir_buffer_stream_get_graphics_region (
    buffer_stream=buffer_stream@entry=0x7f5e9c007f48, 
    region_out=region_out@entry=0x7fff748775d0)
    at ./src/client/mir_buffer_stream_api.cpp:149
#12 0x000055de647da90e in xmir_input_set_cursor (cursor=0x55de6687ff60, 
    xmir_input=<optimised out>, xmir_input=<optimised out>)
    at xmir-cursor.c:108
#13 0x000055de64829eab in miPointerUpdateSprite (pDev=0x55de66621c10)
    at mipointer.c:468
#14 0x000055de6482a0fa in miPointerDisplayCursor (pDev=0x55de66621c10, 
    pScreen=0x55de65c775b0, pCursor=0x55de6687ff60) at mipointer.c:206
#15 0x000055de64816bf1 in CursorDisplayCursor (pDev=0x55de66621c10, 
    pScreen=0x55de65c775b0, pCursor=0x55de6687ff60) at cursor.c:150
#16 0x000055de6489f4e0 in AnimCurDisplayCursor (pDev=0x55de66621c10, 
    pScreen=0x55de65c775b0, pCursor=0x55de6687ff60) at animcur.c:220
#17 0x000055de64910cc8 in ChangeToCursor (pDev=0x55de66621c10, 
    cursor=0x55de6687ff60) at events.c:937
#18 0x000055de64912107 in WindowHasNewCursor (pWin=pWin@entry=0x55de66840be0)
    at events.c:3369
#19 0x000055de64939740 in ChangeWindowAttributes (pWin=0x55de66840be0, 
    vmask=<optimised out>, vlist=vlist@entry=0x55de6690e17c, 
    client=client@entry=0x55de667e37e0) at window.c:1561
#20 0x000055de64901bed in ProcChangeWindowAttributes (client=0x55de667e37e0)
    at dispatch.c:726
#21 0x000055de64907ed5 in Dispatch () at dispatch.c:479
#22 0x000055de6490be58 in dix_main (argc=6, argv=0x7fff74877a58, 
    envp=<optimised out>) at main.c:287
#23 0x00007f5eaa4bf3f1 in __libc_start_main (main=0x55de647d5f70 <main>, 
    argc=6, argv=0x7fff74877a58, init=<optimised out>, fini=<optimised out>, 
    rtld_fini=<optimised out>, stack_end=0x7fff74877a48)
    at ../csu/libc-start.c:291
#24 0x000055de647d5faa in _start ()

** Affects: mir
     Importance: Undecided
         Status: New

** Affects: xorg-server (Ubuntu)
     Importance: High
         Status: New


** Tags: cursor xmir

** Changed in: xorg-server (Ubuntu)
   Importance: Undecided => High

** Also affects: mir
   Importance: Undecided
       Status: New

** Description changed:

  Xmir freezes in mir_buffer_stream_get_graphics_region() from
  xmir_input_set_cursor()
  
  Seems to happen a lot when testing Firefox and Chrome when
  entering/leaving the address bar...
  
  (gdb) bt
  #0  pthread_cond_wait@@GLIBC_2.3.2 ()
      at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
- #1  0x00007fe9624f4c5c in 
std::condition_variable::wait(std::unique_lock<std::mutex>&) () from 
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
- #2  0x00007fe96556c6b2 in ?? ()
-    from /usr/lib/x86_64-linux-gnu/libmirclient.so.9
- #3  0x00007fe9655709ed in ?? ()
-    from /usr/lib/x86_64-linux-gnu/libmirclient.so.9
- #4  0x00007fe965570517 in ?? ()
-    from /usr/lib/x86_64-linux-gnu/libmirclient.so.9
- #5  0x00007fe965574f28 in mir_buffer_stream_get_graphics_region ()
-    from /usr/lib/x86_64-linux-gnu/libmirclient.so.9
- #6  0x0000563e52d4290e in xmir_input_set_cursor (cursor=0x563e5432fce0, 
+ #1  0x00007f5ea91e3c5c in 
std::condition_variable::wait(std::unique_lock<std::mutex>&) () from 
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
+ #2  0x00007f5eac25b6b2 in 
std::condition_variable::wait<mir::client::PromiseStateBase<std::shared_ptr<mir::client::MirBuffer>
 
>::ReadLock::ReadLock(mir::client::PromiseStateBase<std::shared_ptr<mir::client::MirBuffer>
 >&)::{lambda()#1}>(std::unique_lock<std::mutex>&, 
mir::client::PromiseStateBase<std::shared_ptr<mir::client::MirBuffer> 
>::ReadLock::ReadLock(mir::client::PromiseStateBase<std::shared_ptr<mir::client::MirBuffer>
 >&)::{lambda()#1}) ()
+     at /usr/include/c++/6/condition_variable:99
+ #3  __base_ctor  (parent=..., this=0x7fff74877420)
+     at ./src/client/no_tls_future-inl.h:136
+ #4  mir::client::PromiseStateBase<std::shared_ptr<mir::client::MirBuffer> 
>::ensure_read_context() () at ./src/client/no_tls_future-inl.h:152
+ #5  get_value (this=0x55de6688f830) at ./src/client/no_tls_future-inl.h:223
+ #6  get (this=0x7f5e9c008160) at ./src/client/no_tls_future-inl.h:354
+ #7  
mir::client::BufferDepository::advance_current_buffer(std::unique_lock<std::mutex>&)
 (this=this@entry=0x7f5e9c008160, lk=...)
+     at ./src/client/buffer_stream.cpp:166
+ #8  0x00007f5eac25f9ed in current_buffer_id (this=<optimised out>)
+     at ./src/client/buffer_stream.cpp:183
+ #9  get_current_buffer (this=0x7f5e9c007f40)
+     at ./src/client/buffer_stream.cpp:400
+ #10 0x00007f5eac25f517 in secure_for_cpu_write (this=0x7f5e9c007f40)
+     at ./src/client/buffer_stream.cpp:419
+ #11 0x00007f5eac263f28 in mir_buffer_stream_get_graphics_region (
+     buffer_stream=buffer_stream@entry=0x7f5e9c007f48, 
+     region_out=region_out@entry=0x7fff748775d0)
+     at ./src/client/mir_buffer_stream_api.cpp:149
+ #12 0x000055de647da90e in xmir_input_set_cursor (cursor=0x55de6687ff60, 
      xmir_input=<optimised out>, xmir_input=<optimised out>)
      at xmir-cursor.c:108
- #7  0x0000563e52d91eab in miPointerUpdateSprite (pDev=0x563e540e3a90)
+ #13 0x000055de64829eab in miPointerUpdateSprite (pDev=0x55de66621c10)
      at mipointer.c:468
- #8  0x0000563e52d920fa in miPointerDisplayCursor (pDev=0x563e540e3a90, 
-     pScreen=0x563e537385b0, pCursor=0x563e5432fce0) at mipointer.c:206
- #9  0x0000563e52d7ebf1 in CursorDisplayCursor (pDev=0x563e540e3a90, 
-     pScreen=0x563e537385b0, pCursor=0x563e5432fce0) at cursor.c:150
- #10 0x0000563e52e074e0 in AnimCurDisplayCursor (pDev=0x563e540e3a90, 
-     pScreen=0x563e537385b0, pCursor=0x563e5432fce0) at animcur.c:220
- #11 0x0000563e52e78cc8 in ChangeToCursor (pDev=0x563e540e3a90, 
-     cursor=0x563e5432fce0) at events.c:937
- #12 0x0000563e52e7cbba in CheckMotion (ev=ev@entry=0x0, pDev=0x563e540e3a90)
-     at events.c:3090
- #13 0x0000563e52d432b1 in pointer_ensure_focus (
-     xmir_window=xmir_window@entry=0x563e543956d0, dev=0x563e541119c0, 
-     sx=<optimised out>, sy=<optimised out>, xmir_input=<optimised out>)
-     at xmir-input.c:228
- #14 0x0000563e52d43345 in pointer_handle_motion (
-     xmir_input=xmir_input@entry=0x563e54111860, 
-     xmir_window=xmir_window@entry=0x563e543956d0, 
pev=pev@entry=0x7fe950003ba0)
-     at xmir-input.c:243
- #15 0x0000563e52d438a0 in xmir_window_handle_input_event (
-     xmir_input=xmir_input@entry=0x563e54111860, 
-     xmir_window=xmir_window@entry=0x563e543956d0, ev=<optimised out>)
-     at xmir-input.c:491
- #16 0x0000563e52d43b78 in xmir_handle_surface_event_in_main_thread (
-     xmir_screen=<optimised out>, xmir_window=0x563e543956d0, 
-     arg=0x7fe950003ba0) at xmir-input.c:544
- #17 0x0000563e52d453a9 in xmir_process_from_eventloop_except (w=0x0)
-     at xmir-thread-proxy.c:102
- #18 0x0000563e52eaa131 in ospoll_wait (ospoll=0x563e5372d790, 
-     timeout=<optimised out>) at ospoll.c:412
- #19 0x0000563e52ea3a7c in WaitForSomething (are_ready=<optimised out>)
-     at WaitFor.c:226
- #20 0x0000563e52e6fc0a in Dispatch () at dispatch.c:422
- #21 0x0000563e52e73e58 in dix_main (argc=6, argv=0x7ffec1136a68, 
+ #14 0x000055de6482a0fa in miPointerDisplayCursor (pDev=0x55de66621c10, 
+     pScreen=0x55de65c775b0, pCursor=0x55de6687ff60) at mipointer.c:206
+ #15 0x000055de64816bf1 in CursorDisplayCursor (pDev=0x55de66621c10, 
+     pScreen=0x55de65c775b0, pCursor=0x55de6687ff60) at cursor.c:150
+ #16 0x000055de6489f4e0 in AnimCurDisplayCursor (pDev=0x55de66621c10, 
+     pScreen=0x55de65c775b0, pCursor=0x55de6687ff60) at animcur.c:220
+ #17 0x000055de64910cc8 in ChangeToCursor (pDev=0x55de66621c10, 
+     cursor=0x55de6687ff60) at events.c:937
+ #18 0x000055de64912107 in WindowHasNewCursor (pWin=pWin@entry=0x55de66840be0)
+     at events.c:3369
+ #19 0x000055de64939740 in ChangeWindowAttributes (pWin=0x55de66840be0, 
+     vmask=<optimised out>, vlist=vlist@entry=0x55de6690e17c, 
+     client=client@entry=0x55de667e37e0) at window.c:1561
+ #20 0x000055de64901bed in ProcChangeWindowAttributes (client=0x55de667e37e0)
+     at dispatch.c:726
+ #21 0x000055de64907ed5 in Dispatch () at dispatch.c:479
+ #22 0x000055de6490be58 in dix_main (argc=6, argv=0x7fff74877a58, 
      envp=<optimised out>) at main.c:287
- #22 0x00007fe9637d03f1 in __libc_start_main (main=0x563e52d3df70 <main>, 
-     argc=6, argv=0x7ffec1136a68, init=<optimised out>, fini=<optimised out>, 
-     rtld_fini=<optimised out>, stack_end=0x7ffec1136a58)
+ #23 0x00007f5eaa4bf3f1 in __libc_start_main (main=0x55de647d5f70 <main>, 
+     argc=6, argv=0x7fff74877a58, init=<optimised out>, fini=<optimised out>, 
+     rtld_fini=<optimised out>, stack_end=0x7fff74877a48)
      at ../csu/libc-start.c:291
- #23 0x0000563e52d3dfaa in _start ()
+ #24 0x000055de647d5faa in _start ()

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1680378

Title:
  Xmir hangs in mir_buffer_stream_get_graphics_region() from
  xmir_input_set_cursor()

To manage notifications about this bug go to:
https://bugs.launchpad.net/mir/+bug/1680378/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to