Mir

Merge lp:~alan-griffiths/mir/fix-1643446 into lp:mir

Proposed by Alan Griffiths
Status: Merged
Approved by: Alan Griffiths
Approved revision: no longer in the source branch.
Merged at revision: 4222
Proposed branch: lp:~alan-griffiths/mir/fix-1643446
Merge into: lp:mir
Diff against target: 60 lines (+17/-1)
2 files modified
src/server/scene/mediating_display_changer.cpp (+16/-0)
tests/unit-tests/scene/test_mediating_display_changer.cpp (+1/-1)
To merge this branch: bzr merge lp:~alan-griffiths/mir/fix-1643446
Reviewer Review Type Date Requested Status
Brandon Schaefer (community) Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+328730@code.launchpad.net

Commit message

Fix reporting and handling of invalid display configuration. (LP: #1643446)

To post a comment you must log in.
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Continuous integration, rev:4221
https://mir-jenkins.ubuntu.com/job/mir-ci/3544/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/4849/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5050
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5039
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5039
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5039
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4886/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4886/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4886/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4886/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4886/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4886
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4886/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4886
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4886/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4886/console

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/3544/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

17:17:29 11: [ FAILED ] NestedServer.given_nested_server_set_base_display_configuration_when_monitor_plugged_in_configuration_is_reset (5902 ms)
17:41:03 26: [ FAILED ] DisplayTestGeneric.configure_disallows_invalid_configuration

How do those pass locally?!

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Continuous integration, rev:4223
https://mir-jenkins.ubuntu.com/job/mir-ci/3545/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/4851/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5052
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5041
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5041
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5041
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4888
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4888/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4888
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4888/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4888
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4888/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4888/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4888
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4888/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4888
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4888/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4888
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4888/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4888
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4888/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/3545/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

15:24:51 [ FAILED ] 4 tests, listed below:
15:24:51 [ FAILED ] ServerDisconnect.is_detected_by_client
15:24:51 [ FAILED ] ServerDisconnect.doesnt_stop_client_calling_API_functions
15:24:51 [ FAILED ] ServerStartup.creates_endpoint_on_filesystem
15:24:51 [ FAILED ] ServerStartup.after_server_sigkilled_can_start_new_instance

That's odd!

I suspect these are "inherited" from:

15:13:13 11: [ RUN ] NestedServerWithTwoDisplays.uses_passthrough_when_surface_size_is_appropriate
...
15:13:18 11: ==2589== Thread 6 Mir/Input Reade:
15:13:18 11: ==2589== Invalid read of size 8
15:13:18 11: ==2589== at 0x41FFA8A: std::__shared_ptr<mir_test_framework::FakeInputDeviceImpl::InputDevice, (__gnu_cxx::_Lock_policy)2>::operator->() const (shared_ptr_base.h:1055)
15:13:18 11: ==2589== by 0x41FB664: mir_test_framework::FakeInputDeviceImpl::emit_event(mir::input::synthesis::KeyParameters const&)::{lambda()#1}::operator()() const (fake_input_device_impl.cpp:68)

And that's unrelated.

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4224
https://mir-jenkins.ubuntu.com/job/mir-ci/3546/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4852
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5053
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5042
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5042
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5042
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4889
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4889/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4889
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4889/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4889
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4889/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4889
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4889/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4889
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4889/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4889
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4889/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4889
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4889/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4889
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4889/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/3546/rebuild

review: Approve (continuous-integration)
Revision history for this message
Brandon Schaefer (brandontschaefer) wrote :

lgtm and tests seem happy now

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/server/scene/mediating_display_changer.cpp'
--- src/server/scene/mediating_display_changer.cpp 2017-07-28 17:00:43 +0000
+++ src/server/scene/mediating_display_changer.cpp 2017-08-09 15:03:50 +0000
@@ -42,6 +42,7 @@
4242
43namespace43namespace
44{44{
45char const* const bad_display_config = "Invalid or inconsistent display configuration";
4546
46class DisplayConfigurationInProgressError : public mir::ClientVisibleError47class DisplayConfigurationInProgressError : public mir::ClientVisibleError
47{48{
@@ -184,6 +185,11 @@
184 std::shared_ptr<mf::Session> const& session,185 std::shared_ptr<mf::Session> const& session,
185 std::shared_ptr<mg::DisplayConfiguration> const& conf)186 std::shared_ptr<mg::DisplayConfiguration> const& conf)
186{187{
188 if (!conf->valid())
189 {
190 BOOST_THROW_EXCEPTION(std::runtime_error(bad_display_config));
191 }
192
187 {193 {
188 std::lock_guard<std::mutex> lg{configuration_mutex};194 std::lock_guard<std::mutex> lg{configuration_mutex};
189 config_map[session] = conf;195 config_map[session] = conf;
@@ -262,6 +268,11 @@
262 std::shared_ptr<graphics::DisplayConfiguration> const& conf,268 std::shared_ptr<graphics::DisplayConfiguration> const& conf,
263 std::chrono::seconds timeout)269 std::chrono::seconds timeout)
264{270{
271 if (!conf->valid())
272 {
273 BOOST_THROW_EXCEPTION(std::runtime_error(bad_display_config));
274 }
275
265 {276 {
266 std::lock_guard<std::mutex> lock{configuration_mutex};277 std::lock_guard<std::mutex> lock{configuration_mutex};
267278
@@ -553,6 +564,11 @@
553564
554void ms::MediatingDisplayChanger::set_base_configuration(std::shared_ptr<mg::DisplayConfiguration> const &conf)565void ms::MediatingDisplayChanger::set_base_configuration(std::shared_ptr<mg::DisplayConfiguration> const &conf)
555{566{
567 if (!conf->valid())
568 {
569 BOOST_THROW_EXCEPTION(std::runtime_error(bad_display_config));
570 }
571
556 server_action_queue->enqueue(572 server_action_queue->enqueue(
557 this,573 this,
558 [this, conf]574 [this, conf]
559575
=== modified file 'tests/unit-tests/scene/test_mediating_display_changer.cpp'
--- tests/unit-tests/scene/test_mediating_display_changer.cpp 2017-07-28 17:00:43 +0000
+++ tests/unit-tests/scene/test_mediating_display_changer.cpp 2017-08-09 15:03:50 +0000
@@ -454,7 +454,7 @@
454 conf->for_each_output(454 conf->for_each_output(
455 [&new_output_enabled](mg::UserDisplayConfigurationOutput& output)455 [&new_output_enabled](mg::UserDisplayConfigurationOutput& output)
456 {456 {
457 if (!output.used)457 if (output.connected && !output.used)
458 {458 {
459 new_output_enabled = true;459 new_output_enabled = true;
460 output.used = true;460 output.used = true;

Subscribers

People subscribed via source and target branches