diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-04-02 13:58:57 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-04-02 13:58:57 +0000 |
commit | 533ed4c1ed5b2a0e45bc9fe5a518d23da5f5cd17 (patch) | |
tree | 6a4625ffc224b703af4ad0e2f93a02c2d9007967 | |
parent | 30b6bce74ee98480b72d4a23328c0b30c28b4566 (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.cpp | 7 |
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); |