Merge lp:~mir-team/mir/fix-1339700 into lp:mir
Proposed by
Alberto Aguirre
Status: | Rejected |
---|---|
Rejected by: | Alberto Aguirre |
Proposed branch: | lp:~mir-team/mir/fix-1339700 |
Merge into: | lp:mir |
Diff against target: |
120 lines (+42/-16) 2 files modified
src/server/compositor/buffer_queue.cpp (+14/-2) src/server/compositor/timeout_frame_dropping_policy_factory.cpp (+28/-14) |
To merge this branch: | bzr merge lp:~mir-team/mir/fix-1339700 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
PS Jenkins bot (community) | continuous-integration | Approve | |
Cemil Azizoglu (community) | Approve | ||
Alexandros Frantzis (community) | Needs Information | ||
Alan Griffiths | Approve | ||
Daniel van Vugt | Needs Fixing | ||
Review via email: mp+226233@code.launchpad.net |
Commit message
Fix deadlock in BufferQueue when calling framedrop_policy (LP: #1339700)
Description of the change
Fix deadlock in BufferQueue when calling framedrop_policy (LP: #1339700)
To post a comment you must log in.
Unmerged revisions
- 1761. By Alberto Aguirre
-
more doodling to prevent pending_swaps going negative
- 1760. By Alberto Aguirre
-
merge lp:~alan-griffiths/mir/doodle-in-TimeoutFrameDroppingPolicy-code
- 1759. By Alberto Aguirre
-
merge lp:mir/devel
- 1758. By Alberto Aguirre
-
Fix deadlock in BufferQueue when calling framedrop_policy (LP: #1339700)
I'm not really familiar with this. It's all new stuff that appeared while I was on vacation. But simple logic still applies:
(1) Accessing a member variable after having given up the lock that was protecting it, I think is a bad idea: to_client( buffer, std::move(lock)); policy- >swap_unblocked (); to_client( buffer, std::move(lock));
36 + give_buffer_
37 framedrop_
38 - give_buffer_
(2) This unlock also results in a member variable no longer being safely locked. It looks like it should stay locked. Certainly it doesn't appear to do any callbacks... policy- >swap_now_ blocking( );
28 + lock.unlock();
29 framedrop_
(3) No regression test!
Maybe I can help with that as I remember seeing the offending assertion fail for me a couple of times this week. I just need to find where...