Mir

Merge lp:~mir-team/mir/fix-1672960 into lp:mir

Proposed by Alan Griffiths
Status: Merged
Approved by: Alan Griffiths
Approved revision: no longer in the source branch.
Merged at revision: 4221
Proposed branch: lp:~mir-team/mir/fix-1672960
Merge into: lp:mir
Diff against target: 64 lines (+8/-15)
1 file modified
src/server/frontend/protobuf_message_processor.cpp (+8/-15)
To merge this branch: bzr merge lp:~mir-team/mir/fix-1672960
Reviewer Review Type Date Requested Status
Brandon Schaefer (community) Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+328655@code.launchpad.net

Commit message

Don't destroy an IPC "closure" object when it may yet be used. (LP: #1672960)

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

FAILED: Continuous integration, rev:4218
https://mir-jenkins.ubuntu.com/job/mir-ci/3537/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/4838/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5039
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5028
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5028
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5028
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4875/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4875
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4875/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4875/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4875
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4875/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4875
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4875/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/4875
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4875/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/4875
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4875/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4875
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4875/artifact/output/*zip*/output.zip

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

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

PASSED: Continuous integration, rev:4218
https://mir-jenkins.ubuntu.com/job/mir-ci/3540/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4843
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5044
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5033
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5033
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5033
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4880
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4880/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4880
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4880/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4880
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4880/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4880
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4880/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4880
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4880/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/4880
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4880/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/4880
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4880/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4880
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4880/artifact/output/*zip*/output.zip

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

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

Nice, lgtm

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/server/frontend/protobuf_message_processor.cpp'
--- src/server/frontend/protobuf_message_processor.cpp 2017-06-01 13:04:37 +0000
+++ src/server/frontend/protobuf_message_processor.cpp 2017-08-07 10:04:17 +0000
@@ -76,30 +76,23 @@
76 return request;76 return request;
77}77}
7878
79class SelfDeletingCallback : public google::protobuf::Closure79class CallbackClosure : public google::protobuf::Closure
80{80{
81public:81public:
82 SelfDeletingCallback(std::function<void()> const& callback)82 CallbackClosure(std::function<void()> const& callback)
83 : callback(callback)83 : callback(callback)
84 {84 {
85 }85 }
8686
87 void Run() override87 void Run() override
88 {88 {
89 struct Deleter
90 {
91 ~Deleter() { delete obj; }
92 SelfDeletingCallback* obj;
93 };
94 Deleter deleter{this};
95 callback();89 callback();
96 }90 }
9791
98 private:92 private:
99 ~SelfDeletingCallback() = default;93 CallbackClosure(CallbackClosure&) = delete;
100 SelfDeletingCallback(SelfDeletingCallback&) = delete;94 void operator=(const CallbackClosure&) = delete;
101 void operator=(const SelfDeletingCallback&) = delete;95 std::function<void()> const callback;
102 std::function<void()> callback;
103};96};
10497
105template<typename RequestType, typename ResponseType>98template<typename RequestType, typename ResponseType>
@@ -125,14 +118,14 @@
125 }118 }
126 };119 };
127120
128 auto callback = new SelfDeletingCallback{response_callback};121 CallbackClosure callback{response_callback};
129122
130 try123 try
131 {124 {
132 (server->*function)(125 (server->*function)(
133 request,126 request,
134 result_message.get(),127 result_message.get(),
135 callback);128 &callback);
136 }129 }
137 catch (mir::cookie::SecurityCheckError const& /*err*/)130 catch (mir::cookie::SecurityCheckError const& /*err*/)
138 {131 {
@@ -149,7 +142,7 @@
149 using namespace std::literals;142 using namespace std::literals;
150 result_message->set_error("Error processing request: "s +143 result_message->set_error("Error processing request: "s +
151 x.what() + "\nInternal error details: " + boost::diagnostic_information(x));144 x.what() + "\nInternal error details: " + boost::diagnostic_information(x));
152 callback->Run();145 callback.Run();
153 }146 }
154}147}
155148

Subscribers

People subscribed via source and target branches