Mir clients crash when switching VTs
Bug #1189443 reported by
Alan Griffiths
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
Critical
|
Alan Griffiths |
Bug Description
Starting with -r728 Mir clients crash because the server does weird stuff when VTs are switched.
Steps to reproduce:
1. Start the mir_demo_
2. Start clients like mir_demo_
3. Verify the client is running/rendering by switching to VT1
4. Switch to VT2 and see "Assertion `buffer_
Related branches
lp:~alan-griffiths/mir/fix-1189443
- PS Jenkins bot (community): Approve (continuous-integration)
- Kevin DuBois (community): Approve
- Alexandros Frantzis (community): Approve
-
Diff: 497 lines (+111/-40)22 files modifiedinclude/server/mir/compositor/buffer_stream_surfaces.h (+1/-1)
include/server/mir/compositor/buffer_swapper.h (+23/-3)
include/server/mir/compositor/buffer_swapper_multi.h (+3/-2)
include/server/mir/compositor/buffer_swapper_spin.h (+2/-1)
include/server/mir/surfaces/buffer_stream.h (+1/-1)
include/test/mir_test_doubles/mock_buffer_bundle.h (+2/-1)
include/test/mir_test_doubles/mock_buffer_stream.h (+1/-1)
include/test/mir_test_doubles/mock_swapper.h (+2/-1)
include/test/mir_test_doubles/null_buffer_stream.h (+1/-1)
src/server/compositor/buffer_bundle.h (+2/-1)
src/server/compositor/buffer_stream_surfaces.cpp (+3/-2)
src/server/compositor/buffer_swapper_multi.cpp (+33/-1)
src/server/compositor/buffer_swapper_spin.cpp (+8/-3)
src/server/compositor/switching_bundle.cpp (+9/-3)
src/server/compositor/switching_bundle.h (+3/-2)
src/server/surfaces/surface.cpp (+1/-1)
tests/unit-tests/compositor/test_buffer_stream.cpp (+3/-3)
tests/unit-tests/compositor/test_buffer_swapper.cpp (+3/-3)
tests/unit-tests/compositor/test_buffer_swapper_double.cpp (+6/-6)
tests/unit-tests/compositor/test_switching_bundle.cpp (+1/-1)
tests/unit-tests/surfaces/test_surface.cpp (+1/-1)
tests/unit-tests/surfaces/test_surface_stack.cpp (+2/-1)
Changed in mir: | |
importance: | Undecided → Critical |
Changed in mir: | |
assignee: | nobody → Alexandros Frantzis (afrantzis) |
Changed in mir: | |
status: | New → In Progress |
Changed in mir: | |
milestone: | none → 0.0.4 |
Changed in mir: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
Alexandros found that this is because VT switching forces the communicator to stop - aborting any outstanding buffer requests.
While the aborted swap ought to be report as an error it would be better to let the request hang awaiting an available buffer and have a proper pause state in the communicator.