Merge lp:~mir-team/mir/fix-1339700-take2 into lp:mir
Status: | Merged |
---|---|
Approved by: | Daniel van Vugt |
Approved revision: | no longer in the source branch. |
Merged at revision: | 1769 |
Proposed branch: | lp:~mir-team/mir/fix-1339700-take2 |
Merge into: | lp:mir |
Diff against target: |
100 lines (+26/-7) 3 files modified
src/server/asio_main_loop.cpp (+16/-3) src/server/compositor/buffer_queue.h (+4/-1) src/server/compositor/timeout_frame_dropping_policy_factory.cpp (+6/-3) |
To merge this branch: | bzr merge lp:~mir-team/mir/fix-1339700-take2 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
PS Jenkins bot (community) | continuous-integration | Approve | |
Chris Halse Rogers | Approve | ||
Daniel van Vugt | Approve | ||
Review via email: mp+226534@code.launchpad.net |
Commit message
Fix an additional deadlock that could occur after the original deadlock
is fixed (LP: #1339700)
Only ~AlarmImpl should wait for callback completion.
Warning: This introduces a semantic change whereby Alarm::cancel() is now
non-blocking and doesn't guarantee that callbacks are complete. In future
(when ABI changes permit), stop() will be exposed as the public method for
blocking until callbacks are done.
Description of the change
Until stop is exposed, we ensure that the alarm (and objects with embedded alarms) are the first ones to be destroyed so dead objects are not accessed by installed callbacks.
---
Alberto Aguirre (albaguirre) wrote on 2014-07-11: #
Thread A is calling BufferQueue:
Thread B is executing the alarm handler in TimeoutFrameDro
Thread A resumes, calls TimeoutFrameDro
PASSED: Continuous integration, rev:1768 jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- ci/2140/ jenkins. qa.ubuntu. com/job/ mir-android- utopic- i386-build/ 925 jenkins. qa.ubuntu. com/job/ mir-clang- utopic- amd64-build/ 931 jenkins. qa.ubuntu. com/job/ mir-mediumtests -utopic- touch/924 jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- utopic- amd64-ci/ 661 jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- utopic- amd64-ci/ 661/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- utopic- armhf-ci/ 659 jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- utopic- armhf-ci/ 659/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- armhf/3005 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- armhf/3005/ artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ mir-mediumtests -runner- mako/2064 s-jenkins. ubuntu- ci:8080/ job/touch- flash-device/ 9736
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/mir- team-mir- development- branch- ci/2140/ rebuild
http://