aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-04-02 13:58:57 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-04-02 13:58:57 +0000
commit533ed4c1ed5b2a0e45bc9fe5a518d23da5f5cd17 (patch)
tree6a4625ffc224b703af4ad0e2f93a02c2d9007967
parent30b6bce74ee98480b72d4a23328c0b30c28b4566 (diff)
Since killing a task involves unlinking it, all other tasks scheduked must have been killed/unlinked.
If not you will touching freed memory.
-rw-r--r--messagebus/src/vespa/messagebus/network/rpcnetwork.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp b/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp
index d1c663efc39..de3be2ffa01 100644
--- a/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp
+++ b/messagebus/src/vespa/messagebus/network/rpcnetwork.cpp
@@ -47,7 +47,9 @@ public:
_gate() {
ScheduleNow();
}
- ~SyncTask() override = default;
+ ~SyncTask() override {
+ Kill();
+ }
void await() {
_gate.await();
@@ -67,6 +69,9 @@ struct TargetPoolTask : public FNET_Task {
{
ScheduleNow();
}
+ ~TargetPoolTask() override {
+ Kill();
+ }
void PerformTask() override {
_pool.flushTargets(false);
Schedule(1.0);