Xmir hangs in mir_buffer_stream_get_graphics_region() from xmir_input_set_cursor()

Bug #1680378 reported by Daniel van Vugt
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
New
Undecided
Unassigned
mir (Ubuntu)
New
Undecided
Unassigned
xorg-server (Ubuntu)
Won't Fix
High
Daniel van Vugt

Bug Description

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 ()

Tags: cursor xmir
Changed in xorg-server (Ubuntu):
importance: Undecided → High
description: updated
Revision history for this message
Daniel van Vugt (vanvugt) wrote :
Changed in xorg-server (Ubuntu):
assignee: nobody → Daniel van Vugt (vanvugt)
status: New → Fix Committed
Revision history for this message
Michał Sawicz (saviq) wrote :

Syncing task from Mir.

Changed in xorg-server (Ubuntu):
status: Fix Committed → Won't Fix
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.