2014-05-15 10:25:56 |
Daniel van Vugt |
bug |
|
|
added bug |
2014-05-15 10:26:13 |
Daniel van Vugt |
summary |
[regression] [BufferQueue] client freezes as no buffer is returned after compositor_release. |
[regression] [BufferQueue] client freezes as no buffer is returned on compositor_release. |
|
2014-05-15 13:24:50 |
Alexandros Frantzis |
mir: status |
New |
Incomplete |
|
2014-05-16 08:47:06 |
Daniel van Vugt |
summary |
[regression] [BufferQueue] client freezes as no buffer is returned on compositor_release. |
[regression] [BufferQueue] double-buffered client freezes as no buffer is returned on compositor_release. |
|
2014-05-16 08:47:09 |
Daniel van Vugt |
mir: importance |
Critical |
Medium |
|
2014-05-16 08:47:12 |
Daniel van Vugt |
mir: status |
Incomplete |
Triaged |
|
2014-05-16 08:49:38 |
Daniel van Vugt |
description |
[regression] [BufferQueue] client freezes as no buffer is returned after compositor_release.
void mc::BufferQueue::compositor_release(std::shared_ptr<graphics::Buffer> const& buffer)
{
......
if (current_compositor_buffer != buffer.get() && nbuffers > 1)
release(buffer.get(), std::move(lock));
// else ... what happens to buffer? It's not in any queue any more, is it?
}
I've traced the freeze to a compositor_release being called after client_acquire, but release() is not called and so the client never gets a buffer.
I hope this is my fault because I've only seen it happen conclusively in my own experimental branches after rotating the screen. However it would explain the random extended delays observed in bug 1317370 too. |
Double-buffered clients can freeze in some cases, indefinitely waiting for a callback that never comes (because no new compositor frames are scheduled).
Test case:
1. Force double-buffering in the server by changing 3 to 2 in buffer_stream_factory.cpp.
2. Start your modified server using: mir_demo_server_shell
3. Run: mir_demo_client_egltriangle
4. Rotate the screen (Ctrl+Alt+Left/Right/Down)
Expected: Screen rotates and client keeps rendering.
Observed: Screen rotates but client is frozen until you drag or resize it. |
|
2014-05-16 08:51:28 |
Daniel van Vugt |
mir: assignee |
|
Daniel van Vugt (vanvugt) |
|
2014-05-16 08:51:35 |
Daniel van Vugt |
mir: status |
Triaged |
In Progress |
|
2014-05-16 09:05:26 |
Daniel van Vugt |
branch linked |
|
lp:~vanvugt/mir/fix-1319765 |
|
2014-05-20 08:38:12 |
PS Jenkins bot |
mir: status |
In Progress |
Fix Committed |
|
2014-06-05 03:08:51 |
Launchpad Janitor |
branch linked |
|
lp:ubuntu/utopic-proposed/mir |
|
2014-06-06 18:49:37 |
Launchpad Janitor |
mir (Ubuntu): status |
New |
Fix Released |
|
2014-07-01 07:37:56 |
Daniel van Vugt |
mir: status |
Fix Committed |
Fix Released |
|
2015-02-12 08:41:43 |
Daniel van Vugt |
branch linked |
|
lp:~vanvugt/mir/fix-1420678 |
|
2015-02-12 08:53:24 |
Daniel van Vugt |
branch unlinked |
lp:~vanvugt/mir/fix-1420678 |
|
|