From 533ed4c1ed5b2a0e45bc9fe5a518d23da5f5cd17 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 2 Apr 2020 13:58:57 +0000 Subject: Since killing a task involves unlinking it, all other tasks scheduked must have been killed/unlinked. If not you will touching freed memory. --- messagebus/src/vespa/messagebus/network/rpcnetwork.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3