From: "Alexander V. Tikhonov" <avtikhon@tarantool.org>
To: Kirill Yukhin <kyukhin@tarantool.org>,
Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: [Tarantool-patches] [PATCH v2] asan: leak unit/swim.test:swim_test_encryption
Date: Thu, 10 Sep 2020 08:30:44 +0300 [thread overview]
Message-ID: <5271f7464f846c1525cbbc7b1df32c659e15d3b7.1599715771.git.avtikhon@tarantool.org> (raw)
Found leak issue:
[001] +==41031==ERROR: LeakSanitizer: detected memory leaks
[001] +
[001] +Direct leak of 96 byte(s) in 2 object(s) allocated from:
[001] + #0 0x4d8e53 in __interceptor_malloc (/tnt/test/unit/swim.test+0x4d8e53)
[001] + #1 0x53560f in crypto_codec_new /source/src/lib/crypto/crypto.c:239:51
[001] + #2 0x5299c4 in swim_scheduler_set_codec /source/src/lib/swim/swim_io.c:700:30
[001] + #3 0x511fe6 in swim_cluster_set_codec /source/test/unit/swim_test_utils.c:251:2
[001] + #4 0x50b3ae in swim_test_encryption /source/test/unit/swim.c:767:2
[001] + #5 0x50b3ae in main_f /source/test/unit/swim.c:1123
[001] + #6 0x544a3b in fiber_loop /source/src/lib/core/fiber.c:869:18
[001] + #7 0x5a13d0 in coro_init /source/third_party/coro/coro.c:110:3
[001] +
[001] +SUMMARY: AddressSanitizer: 96 byte(s) leaked in 2 allocation(s).
Prepared minimal issue reproducer:
static void
swim_test_encryption(void)
{
swim_start_test(3);
struct swim_cluster *cluster = swim_cluster_new(2);
swim_cluster_set_codec(cluster, CRYPTO_ALGO_AES128, CRYPTO_MODE_CBC,
"1234567812345678", CRYPTO_AES128_KEY_SIZE);
swim_cluster_delete(cluster);
swim_finish_test();
}
Found that memory allocation for codec creation at crypto_codec_new()
using swim_cluster_set_codec() was not any freed at the test. Added
crypto_codec_delete() in swim_scheduler_destroy() function for it.
After this fix removed susspencion on memory leak for unit/swim.test.
Closes #5283
Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Co-authored-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
---
Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-5283-asan-swim
Issue: https://github.com/tarantool/tarantool/issues/5283
asan/lsan.supp | 4 ----
src/lib/swim/swim_io.c | 2 ++
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/asan/lsan.supp b/asan/lsan.supp
index 77b7c2cfc..46b3001e9 100644
--- a/asan/lsan.supp
+++ b/asan/lsan.supp
@@ -52,10 +52,6 @@ leak:mh_i32ptr_new
# source: src/lib/core/exception.cc
leak:Exception::operator new
-# test: unit/swim.test.lua
-# source: src/lib/swim/swim_io.c
-leak:swim_scheduler_set_codec
-
# test: vinyl/errinj.test.lua
# source: src/lib/core/fiber.h
leak:fiber_cxx_invoke
diff --git a/src/lib/swim/swim_io.c b/src/lib/swim/swim_io.c
index af1092416..c8558c43e 100644
--- a/src/lib/swim/swim_io.c
+++ b/src/lib/swim/swim_io.c
@@ -402,6 +402,8 @@ swim_scheduler_destroy(struct swim_scheduler *scheduler)
swim_transport_destroy(&scheduler->transport);
swim_ev_io_stop(swim_loop(), &scheduler->output);
swim_scheduler_stop_input(scheduler);
+ if (scheduler->codec != NULL)
+ crypto_codec_delete(scheduler->codec);
assert(scheduler_count > 0);
if (--scheduler_count == 0)
swim_task_pool_destroy();
--
2.17.1
next reply other threads:[~2020-09-10 5:30 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-10 5:30 Alexander V. Tikhonov [this message]
2020-09-10 19:15 ` Vladislav Shpilevoy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5271f7464f846c1525cbbc7b1df32c659e15d3b7.1599715771.git.avtikhon@tarantool.org \
--to=avtikhon@tarantool.org \
--cc=kyukhin@tarantool.org \
--cc=tarantool-patches@dev.tarantool.org \
--cc=v.shpilevoy@tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH v2] asan: leak unit/swim.test:swim_test_encryption' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox