Mir

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

Proposed by Alan Griffiths
Status: Merged
Approved by: Alan Griffiths
Approved revision: no longer in the source branch.
Merged at revision: 3385
Proposed branch: lp:~alan-griffiths/mir/fix-1555620
Merge into: lp:mir
Diff against target: 69 lines (+20/-18)
2 files modified
src/server/scene/application_session.cpp (+18/-18)
src/server/scene/application_session.h (+2/-0)
To merge this branch: bzr merge lp:~alan-griffiths/mir/fix-1555620
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Approve
Cemil Azizoglu (community) Approve
Kevin DuBois (community) Approve
Alberto Aguirre (community) Approve
Review via email: mp+288663@code.launchpad.net

Commit message

scene: ensure that the buffer stream associated with a closing surface has no outstanding buffer requests

Description of the change

scene: ensure that the buffer stream associated with a closing surface has no outstanding buffer requests

To post a comment you must log in.
Revision history for this message
Cemil Azizoglu (cemil-azizoglu) wrote :

Would be good to have a test.

Revision history for this message
Alberto Aguirre (albaguirre) wrote :

LGTM.

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

PASSED: Continuous integration, rev:3383
https://mir-jenkins.ubuntu.com/job/mir-ci/537/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/407
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/437
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/429
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/429
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/416
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/416/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/416
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/416/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/416
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/416/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/416
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/416/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/416
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/416/artifact/output/*zip*/output.zip

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

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

> Would be good to have a test.

We used to have mir-mediumtest-runner.sh that ran all the clients via:

    $ mir_demo_server --test-client <client>

I'm following up on why that either got lost, or now fails to detect the failure. (I suspect a blip in the transition to jenkaas - a good excuse for me to learn more.)

I'm tempted to write "mir_demo_client_try_to_crash_the_server" and plug that into that test suite.

Revision history for this message
Kevin DuBois (kdub) wrote :

lgtm.
force_requests_to_complete() is slated for removal soon, so I don't mind the lack of test.

review: Approve
Revision history for this message
Cemil Azizoglu (cemil-azizoglu) wrote :

LGTM

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

FAILED: Autolanding.
More details in the following jenkins job:
https://mir-jenkins.ubuntu.com/job/mir-autolanding/76/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/417/console
    None: https://mir-jenkins.ubuntu.com/job/generic-land-mp/84/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/447
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/439
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/439
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/426/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/426
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/426/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/426
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/426/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/426
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/426/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/426
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/426/artifact/output/*zip*/output.zip

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

> lgtm.
> force_requests_to_complete() is slated for removal soon, so I don't mind the
> lack of test.

Surely that should means a test is important - to ensure removing the call that's needed here doesn't cause a regression?

But I won't block as I do plan to improve our testing - just not in this MP.

Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

Failure is lp:1552065

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

FAILED: Autolanding.
More details in the following jenkins job:
https://mir-jenkins.ubuntu.com/job/mir-autolanding/78/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/421/console
    None: https://mir-jenkins.ubuntu.com/job/generic-land-mp/86/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/451
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/443
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/443
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/430/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/430
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/430/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/430
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/430/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/430/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/430
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/430/artifact/output/*zip*/output.zip

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

10:47:50 E: apt-get update failed

re-re-approving

Revision history for this message
Mir CI Bot (mir-ci-bot) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/server/scene/application_session.cpp'
2--- src/server/scene/application_session.cpp 2016-03-02 08:43:21 +0000
3+++ src/server/scene/application_session.cpp 2016-03-10 15:33:39 +0000
4@@ -242,17 +242,8 @@
5 void ms::ApplicationSession::destroy_surface(mf::SurfaceId id)
6 {
7 std::unique_lock<std::mutex> lock(surfaces_and_streams_mutex);
8- auto p = checked_find(id);
9- auto const surface = p->second;
10- session_listener->destroying_surface(*this, surface);
11- surfaces.erase(p);
12- auto stream_it = streams.find(mf::BufferStreamId(id.as_value()));
13- if (stream_it != streams.end())
14- streams.erase(stream_it);
15-
16- lock.unlock();
17-
18- surface_stack->remove_surface(surface);
19+
20+ destroy_surface(lock, checked_find(id));
21 }
22
23 std::string ms::ApplicationSession::name() const
24@@ -394,16 +385,25 @@
25 if (p == surfaces.end())
26 BOOST_THROW_EXCEPTION(std::runtime_error("Invalid Surface"));
27
28- auto const id = p->first;
29-
30- session_listener->destroying_surface(*this, ss);
31- surfaces.erase(p);
32- auto stream_it = streams.find(mf::BufferStreamId(id.as_value()));
33+ destroy_surface(lock, p);
34+}
35+
36+void ms::ApplicationSession::destroy_surface(std::unique_lock<std::mutex>& lock, Surfaces::const_iterator in_surfaces)
37+{
38+ auto const surface = in_surfaces->second;
39+ auto const id = in_surfaces->first;
40+
41+ session_listener->destroying_surface(*this, surface);
42+ surfaces.erase(in_surfaces);
43+
44+ auto stream_it = streams.find(mir::frontend::BufferStreamId(id.as_value()));
45 if (stream_it != streams.end())
46+ {
47+ stream_it->second->force_requests_to_complete();
48 streams.erase(stream_it);
49+ }
50
51 lock.unlock();
52
53- surface_stack->remove_surface(ss);
54-
55+ surface_stack->remove_surface(surface);
56 }
57
58=== modified file 'src/server/scene/application_session.h'
59--- src/server/scene/application_session.h 2016-01-29 08:18:22 +0000
60+++ src/server/scene/application_session.h 2016-03-10 15:33:39 +0000
61@@ -125,6 +125,8 @@
62 std::mutex mutable surfaces_and_streams_mutex;
63 Surfaces surfaces;
64 Streams streams;
65+
66+ void destroy_surface(std::unique_lock<std::mutex>& lock, Surfaces::const_iterator in_surfaces);
67 };
68
69 }

Subscribers

People subscribed via source and target branches