Tarantool development patches archive
 help / color / mirror / Atom feed
* [Tarantool-patches] [PATCH v1 0/2] Add LSAN to ASAN testing
@ 2019-11-21  8:25 Alexander V. Tikhonov
  2019-11-21  8:25 ` [Tarantool-patches] [PATCH v1 1/2] test: use default replication connection timeout Alexander V. Tikhonov
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Alexander V. Tikhonov @ 2019-11-21  8:25 UTC (permalink / raw)
  To: Igor Munkin; +Cc: tarantool-patches

Added memory leaks detection LSAN to ASAN testing.
Added files with exceptions:
 - address sanitizer on compilation:  asan/ignore_asan.txt
 - memory leak sanitizer on run-time: asan/ignore_lsan.txt
Blocked 'box/on_shutdown.test.lua' test that breaks the
testing, all of excepted tests will be enabled during
issue #4360.
Added 'engine' and replication' suites into the testing. To
enable replication suite testing removed all local connection
timeout setups, where it is not the part of the testing
scenario. Instead of it the default value will be used, because
the most of tests used the replication connection timeout is
equal to 0.5 second, while default value is set at sources file:
    src/box/lua/load_cfg.lua
to the value of 30 seconds:
    replication_connect_timeout = 30
which is quite enough for all of the tests.

Close #2058
---

Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-2058-asan-with-leaks
Issue: https://github.com/tarantool/tarantool/issues/2058

Alexander V. Tikhonov (2):
  test: use default replication connection timeout
  gitlab-ci: ASAN testing memory leaks add

 .travis.mk                                    |  13 ++-
 asan/ignore_asan.txt                          |  17 +++
 asan/ignore_lsan.txt                          | 105 ++++++++++++++++++
 cmake/profile.cmake                           |   4 +-
 test/box/on_shutdown.skipcond                 |   7 ++
 test/replication/autobootstrap.lua            |   2 -
 test/replication/autobootstrap.result         |   2 +-
 test/replication/autobootstrap.test.lua       |   2 +-
 test/replication/autobootstrap_guest.lua      |   2 -
 test/replication/before_replace.result        |   6 +-
 test/replication/before_replace.test.lua      |   6 +-
 test/replication/ddl.lua                      |   2 -
 test/replication/hot_standby.lua              |   1 -
 test/replication/master.lua                   |   1 -
 test/replication/master_quorum.lua            |   2 -
 test/replication/on_replace.lua               |   2 -
 test/replication/quorum.lua                   |   2 -
 test/replication/quorum.result                |  15 ++-
 test/replication/quorum.test.lua              |  15 ++-
 test/replication/rebootstrap.lua              |   2 -
 test/replication/rebootstrap.result           |   4 +-
 test/replication/rebootstrap.test.lua         |   4 +-
 test/replication/recover_missing_xlog.result  |   2 +-
 .../replication/recover_missing_xlog.test.lua |   2 +-
 test/replication/replica.lua                  |   1 -
 test/replication/replica_auth.lua             |   2 -
 test/replication/replica_no_quorum.lua        |   1 -
 test/replication/replica_quorum.lua           |   2 -
 test/replication/replica_timeout.lua          |   2 -
 test/replication/replica_uuid.lua             |   1 -
 test/replication/replica_uuid_ro.lua          |   2 -
 test/replication/replicaset_ro_mostly.result  |   2 +-
 .../replication/replicaset_ro_mostly.test.lua |   2 +-
 test/replication/wal_off.lua                  |   1 -
 34 files changed, 168 insertions(+), 68 deletions(-)
 create mode 100644 asan/ignore_asan.txt
 create mode 100644 asan/ignore_lsan.txt
 create mode 100644 test/box/on_shutdown.skipcond

-- 
2.17.1

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Tarantool-patches] [PATCH v1 1/2] test: use default replication connection timeout
  2019-11-21  8:25 [Tarantool-patches] [PATCH v1 0/2] Add LSAN to ASAN testing Alexander V. Tikhonov
@ 2019-11-21  8:25 ` Alexander V. Tikhonov
  2020-01-14 23:23   ` Igor Munkin
  2019-11-21  8:25 ` [Tarantool-patches] [PATCH v1 2/2] gitlab-ci: ASAN testing memory leaks add Alexander V. Tikhonov
  2020-04-02  7:53 ` [Tarantool-patches] [PATCH v1 0/2] Add LSAN to ASAN testing Kirill Yukhin
  2 siblings, 1 reply; 8+ messages in thread
From: Alexander V. Tikhonov @ 2019-11-21  8:25 UTC (permalink / raw)
  To: Igor Munkin; +Cc: tarantool-patches

Removed all local connection timeout setups, where it is not the part
of the testing scenario. Instead of it the default value will be used.
Also it is more comfortable to change the single default value instead
of the change this value at each of the test scenarios, it will help
to avoid of flaky results in tests beacuse of different timeout vlaues.
The most of tests used the replication connection timeout is equal to
0.5 second, while defualt value is set at sources file:
    src/box/lua/load_cfg.lua
to the value of 30 seconds:
    replication_connect_timeout = 30
which is quite enough for all of the tests that don't need any special
values for it.

Part of #2058
---
 test/replication/autobootstrap.lua             |  2 --
 test/replication/autobootstrap.result          |  2 +-
 test/replication/autobootstrap.test.lua        |  2 +-
 test/replication/autobootstrap_guest.lua       |  2 --
 test/replication/before_replace.result         |  6 +++---
 test/replication/before_replace.test.lua       |  6 +++---
 test/replication/ddl.lua                       |  2 --
 test/replication/hot_standby.lua               |  1 -
 test/replication/master.lua                    |  1 -
 test/replication/master_quorum.lua             |  2 --
 test/replication/on_replace.lua                |  2 --
 test/replication/quorum.lua                    |  2 --
 test/replication/quorum.result                 | 15 +++++++--------
 test/replication/quorum.test.lua               | 15 +++++++--------
 test/replication/rebootstrap.lua               |  2 --
 test/replication/rebootstrap.result            |  4 ++--
 test/replication/rebootstrap.test.lua          |  4 ++--
 test/replication/recover_missing_xlog.result   |  2 +-
 test/replication/recover_missing_xlog.test.lua |  2 +-
 test/replication/replica.lua                   |  1 -
 test/replication/replica_auth.lua              |  2 --
 test/replication/replica_no_quorum.lua         |  1 -
 test/replication/replica_quorum.lua            |  2 --
 test/replication/replica_timeout.lua           |  2 --
 test/replication/replica_uuid.lua              |  1 -
 test/replication/replica_uuid_ro.lua           |  2 --
 test/replication/replicaset_ro_mostly.result   |  2 +-
 test/replication/replicaset_ro_mostly.test.lua |  2 +-
 test/replication/wal_off.lua                   |  1 -
 29 files changed, 30 insertions(+), 60 deletions(-)

diff --git a/test/replication/autobootstrap.lua b/test/replication/autobootstrap.lua
index 856b36e66..6d01fb2da 100644
--- a/test/replication/autobootstrap.lua
+++ b/test/replication/autobootstrap.lua
@@ -6,7 +6,6 @@ local USER = 'cluster'
 local PASSWORD = 'somepassword'
 local SOCKET_DIR = require('fio').cwd()
 local TIMEOUT = tonumber(arg[1])
-local CON_TIMEOUT = arg[2] and tonumber(arg[2]) or 30.0
 
 local function instance_uri(instance_id)
     --return 'localhost:'..(3310 + instance_id)
@@ -25,7 +24,6 @@ box.cfg({
         USER..':'..PASSWORD..'@'..instance_uri(3);
     };
     replication_timeout = TIMEOUT;
-    replication_connect_timeout = CON_TIMEOUT;
 })
 
 box.once("bootstrap", function()
diff --git a/test/replication/autobootstrap.result b/test/replication/autobootstrap.result
index 743982d47..ec9667663 100644
--- a/test/replication/autobootstrap.result
+++ b/test/replication/autobootstrap.result
@@ -188,7 +188,7 @@ box.space.test_u:select()
 _ = test_run:cmd("switch autobootstrap1")
 ---
 ...
-_ = test_run:cmd("restart server autobootstrap1 with cleanup=1, args ='0.1 0.5'")
+_ = test_run:cmd("restart server autobootstrap1 with cleanup=1, args ='0.1'")
 _ = box.space.test_u:replace({5, 6, 7, 8})
 ---
 ...
diff --git a/test/replication/autobootstrap.test.lua b/test/replication/autobootstrap.test.lua
index 055ea4277..8c75d1322 100644
--- a/test/replication/autobootstrap.test.lua
+++ b/test/replication/autobootstrap.test.lua
@@ -86,7 +86,7 @@ box.space.test_u:select()
 -- Rebootstrap one node and check that others follow.
 --
 _ = test_run:cmd("switch autobootstrap1")
-_ = test_run:cmd("restart server autobootstrap1 with cleanup=1, args ='0.1 0.5'")
+_ = test_run:cmd("restart server autobootstrap1 with cleanup=1, args ='0.1'")
 
 _ = box.space.test_u:replace({5, 6, 7, 8})
 box.space.test_u:select()
diff --git a/test/replication/autobootstrap_guest.lua b/test/replication/autobootstrap_guest.lua
index d7176ae5b..54febd1b6 100644
--- a/test/replication/autobootstrap_guest.lua
+++ b/test/replication/autobootstrap_guest.lua
@@ -6,7 +6,6 @@ local INSTANCE_ID = string.match(arg[0], "%d")
 local SOCKET_DIR = require('fio').cwd()
 
 local TIMEOUT = tonumber(arg[1])
-local CON_TIMEOUT = arg[2] and tonumber(arg[2]) or 30.0
 
 local function instance_uri(instance_id)
     --return 'localhost:'..(3310 + instance_id)
@@ -25,7 +24,6 @@ box.cfg({
         instance_uri(3);
     };
     replication_timeout = TIMEOUT;
-    replication_connect_timeout = CON_TIMEOUT;
 })
 
 box.once("bootstrap", function()
diff --git a/test/replication/before_replace.result b/test/replication/before_replace.result
index ced40547e..ce66718d1 100644
--- a/test/replication/before_replace.result
+++ b/test/replication/before_replace.result
@@ -138,7 +138,7 @@ box.space.test:select()
   - [9, 90]
   - [10, 100]
 ...
-test_run:cmd('restart server autobootstrap1 with args="0.1 0.5"')
+test_run:cmd('restart server autobootstrap1 with args="0.1"')
 box.space.test:select()
 ---
 - - [1, 10]
@@ -169,7 +169,7 @@ box.space.test:select()
   - [9, 90]
   - [10, 100]
 ...
-test_run:cmd('restart server autobootstrap2 with args="0.1 0.5"')
+test_run:cmd('restart server autobootstrap2 with args="0.1"')
 box.space.test:select()
 ---
 - - [1, 10]
@@ -204,7 +204,7 @@ push_err
 ---
 - Session 'applier' does not support push()
 ...
-test_run:cmd('restart server autobootstrap3 with args="0.1 0.5"')
+test_run:cmd('restart server autobootstrap3 with args="0.1"')
 box.space.test:select()
 ---
 - - [1, 10]
diff --git a/test/replication/before_replace.test.lua b/test/replication/before_replace.test.lua
index bcc6dc00d..3b9910cbc 100644
--- a/test/replication/before_replace.test.lua
+++ b/test/replication/before_replace.test.lua
@@ -65,16 +65,16 @@ vclock2 = test_run:wait_cluster_vclock(SERVERS, vclock)
 -- and the state persists after restart.
 test_run:cmd("switch autobootstrap1")
 box.space.test:select()
-test_run:cmd('restart server autobootstrap1 with args="0.1 0.5"')
+test_run:cmd('restart server autobootstrap1 with args="0.1"')
 box.space.test:select()
 test_run:cmd("switch autobootstrap2")
 box.space.test:select()
-test_run:cmd('restart server autobootstrap2 with args="0.1 0.5"')
+test_run:cmd('restart server autobootstrap2 with args="0.1"')
 box.space.test:select()
 test_run:cmd("switch autobootstrap3")
 box.space.test:select()
 push_err
-test_run:cmd('restart server autobootstrap3 with args="0.1 0.5"')
+test_run:cmd('restart server autobootstrap3 with args="0.1"')
 box.space.test:select()
 
 -- Cleanup.
diff --git a/test/replication/ddl.lua b/test/replication/ddl.lua
index 72cf1db69..2db977d46 100644
--- a/test/replication/ddl.lua
+++ b/test/replication/ddl.lua
@@ -7,7 +7,6 @@ local PASSWORD = 'somepassword'
 local SOCKET_DIR = require('fio').cwd()
 
 local TIMEOUT = tonumber(arg[1])
-local CON_TIMEOUT  = arg[2] and tonumber(arg[2]) or 30.0
 
 local function instance_uri(instance_id)
     --return 'localhost:'..(3310 + instance_id)
@@ -27,7 +26,6 @@ box.cfg({
         USER..':'..PASSWORD..'@'..instance_uri(4);
     };
     replication_timeout = TIMEOUT,
-    replication_connect_timeout = CON_TIMEOUT,
 })
 
 box.once("bootstrap", function()
diff --git a/test/replication/hot_standby.lua b/test/replication/hot_standby.lua
index cd53fc776..30742ce4f 100644
--- a/test/replication/hot_standby.lua
+++ b/test/replication/hot_standby.lua
@@ -10,6 +10,5 @@ box.cfg({
     vinyl_dir           = "master",
     hot_standby         = true,
     replication_timeout = 0.1,
-    replication_connect_timeout = 0.5,
 })
 
diff --git a/test/replication/master.lua b/test/replication/master.lua
index 9b96b7891..e924b5495 100644
--- a/test/replication/master.lua
+++ b/test/replication/master.lua
@@ -3,7 +3,6 @@ os = require('os')
 box.cfg({
     listen              = os.getenv("LISTEN"),
     memtx_memory        = 107374182,
-    replication_connect_timeout = 0.5,
     replication_timeout = 0.1
 })
 
diff --git a/test/replication/master_quorum.lua b/test/replication/master_quorum.lua
index 05272ac5e..20f161cc0 100644
--- a/test/replication/master_quorum.lua
+++ b/test/replication/master_quorum.lua
@@ -6,7 +6,6 @@ local INSTANCE_ID = string.match(arg[0], "%d")
 local SOCKET_DIR = require('fio').cwd()
 
 local TIMEOUT = tonumber(arg[1])
-local CON_TIMEOUT = arg[2] and tonumber(arg[2]) or 30.0
 
 local function instance_uri(instance_id)
     --return 'localhost:'..(3310 + instance_id)
@@ -25,7 +24,6 @@ box.cfg({
     };
     replication_connect_quorum = 0;
     replication_timeout = TIMEOUT;
-    replication_connect_timeout = CON_TIMEOUT;
 })
 
 test_run = require('test_run').new()
diff --git a/test/replication/on_replace.lua b/test/replication/on_replace.lua
index 40c12a9ea..71e63d3f9 100644
--- a/test/replication/on_replace.lua
+++ b/test/replication/on_replace.lua
@@ -7,7 +7,6 @@ local PASSWORD = 'somepassword'
 local SOCKET_DIR = require('fio').cwd()
 
 local TIMEOUT = tonumber(arg[1])
-local CON_TIMEOUT = arg[2] and tonumber(arg[2]) or 30.0
 
 local function instance_uri(instance_id)
     --return 'localhost:'..(3310 + instance_id)
@@ -28,7 +27,6 @@ box.cfg({
         USER..':'..PASSWORD..'@'..instance_uri(2);
     };
     replication_timeout = TIMEOUT,
-    replication_connect_timeout = CON_TIMEOUT,
 })
 
 box.once("bootstrap", function()
diff --git a/test/replication/quorum.lua b/test/replication/quorum.lua
index f61c8748f..129e676e0 100644
--- a/test/replication/quorum.lua
+++ b/test/replication/quorum.lua
@@ -6,7 +6,6 @@ local INSTANCE_ID = string.match(arg[0], "%d")
 local SOCKET_DIR = require('fio').cwd()
 
 local TIMEOUT = tonumber(arg[1])
-local CON_TIMEOUT = arg[2] and tonumber(arg[2]) or 30.0
 
 local function instance_uri(instance_id)
     --return 'localhost:'..(3310 + instance_id)
@@ -20,7 +19,6 @@ box.cfg({
     listen = instance_uri(INSTANCE_ID);
     replication_timeout = TIMEOUT;
     replication_sync_lag = 0.01;
-    replication_connect_timeout = CON_TIMEOUT;
     replication_connect_quorum = 3;
     replication = {
         instance_uri(1);
diff --git a/test/replication/quorum.result b/test/replication/quorum.result
index ff5fa0150..ae2d9697c 100644
--- a/test/replication/quorum.result
+++ b/test/replication/quorum.result
@@ -27,7 +27,7 @@ test_run:cmd('switch quorum2')
 ---
 - true
 ...
-test_run:cmd('restart server quorum2 with args="0.1 0.5"')
+test_run:cmd('restart server quorum2 with args="0.1"')
 box.info.status -- orphan
 ---
 - orphan
@@ -51,7 +51,7 @@ box.info.status -- running
 ---
 - running
 ...
-test_run:cmd('restart server quorum2 with args="0.1 0.5"')
+test_run:cmd('restart server quorum2 with args="0.1"')
 box.info.status -- orphan
 ---
 - orphan
@@ -82,7 +82,7 @@ box.info.status -- running
 ---
 - running
 ...
-test_run:cmd('restart server quorum2 with args="0.1 0.5"')
+test_run:cmd('restart server quorum2 with args="0.1"')
 box.info.status -- orphan
 ---
 - orphan
@@ -99,7 +99,7 @@ box.space.test:replace{100} -- error
 ---
 - error: Can't modify data because this instance is in read-only mode.
 ...
-test_run:cmd('start server quorum1 with args="0.1 0.5"')
+test_run:cmd('start server quorum1 with args="0.1"')
 ---
 - true
 ...
@@ -158,7 +158,7 @@ fiber = require('fiber')
 fiber.sleep(0.1)
 ---
 ...
-test_run:cmd('start server quorum1 with args="0.1  0.5"')
+test_run:cmd('start server quorum1 with args="0.1"')
 ---
 - true
 ...
@@ -196,7 +196,7 @@ test_run:cmd('switch quorum1')
 ---
 - true
 ...
-test_run:cmd('restart server quorum1 with cleanup=1, args="0.1 0.5"')
+test_run:cmd('restart server quorum1 with cleanup=1, args="0.1"')
 box.space.test:count() -- 100
 ---
 - 100
@@ -411,10 +411,9 @@ test_run:cmd('create server replica_quorum with script="replication/replica_quor
 - true
 ...
 -- Arguments are: replication_connect_quorum, replication_timeout
--- replication_connect_timeout.
 -- If replication_connect_quorum was ignored here, the instance
 -- would exit with an error.
-test_run:cmd('start server replica_quorum with wait=True, wait_load=True, args="1 0.05 0.1"')
+test_run:cmd('start server replica_quorum with wait=True, wait_load=True, args="1 0.05"')
 ---
 - true
 ...
diff --git a/test/replication/quorum.test.lua b/test/replication/quorum.test.lua
index 98febb367..3c875deea 100644
--- a/test/replication/quorum.test.lua
+++ b/test/replication/quorum.test.lua
@@ -18,7 +18,7 @@ test_run:cmd('stop server quorum1')
 
 test_run:cmd('switch quorum2')
 
-test_run:cmd('restart server quorum2 with args="0.1 0.5"')
+test_run:cmd('restart server quorum2 with args="0.1"')
 box.info.status -- orphan
 box.ctl.wait_rw(0.001) -- timeout
 box.info.ro -- true
@@ -26,7 +26,7 @@ box.space.test:replace{100} -- error
 box.cfg{replication={}}
 box.info.status -- running
 
-test_run:cmd('restart server quorum2 with args="0.1 0.5"')
+test_run:cmd('restart server quorum2 with args="0.1"')
 box.info.status -- orphan
 box.ctl.wait_rw(0.001) -- timeout
 box.info.ro -- true
@@ -36,12 +36,12 @@ box.ctl.wait_rw()
 box.info.ro -- false
 box.info.status -- running
 
-test_run:cmd('restart server quorum2 with args="0.1 0.5"')
+test_run:cmd('restart server quorum2 with args="0.1"')
 box.info.status -- orphan
 box.ctl.wait_rw(0.001) -- timeout
 box.info.ro -- true
 box.space.test:replace{100} -- error
-test_run:cmd('start server quorum1 with args="0.1 0.5"')
+test_run:cmd('start server quorum1 with args="0.1"')
 box.ctl.wait_rw()
 box.info.ro -- false
 box.info.status -- running
@@ -63,7 +63,7 @@ for i = 1, 100 do box.space.test:insert{i} end
 fiber = require('fiber')
 fiber.sleep(0.1)
 
-test_run:cmd('start server quorum1 with args="0.1  0.5"')
+test_run:cmd('start server quorum1 with args="0.1"')
 test_run:cmd('switch quorum1')
 box.space.test:count() -- 100
 
@@ -79,7 +79,7 @@ test_run:cmd('switch quorum2')
 box.snapshot()
 
 test_run:cmd('switch quorum1')
-test_run:cmd('restart server quorum1 with cleanup=1, args="0.1 0.5"')
+test_run:cmd('restart server quorum1 with cleanup=1, args="0.1"')
 
 box.space.test:count() -- 100
 
@@ -156,10 +156,9 @@ test_run:drop_cluster(SERVERS)
 box.schema.user.grant('guest', 'replication')
 test_run:cmd('create server replica_quorum with script="replication/replica_quorum.lua"')
 -- Arguments are: replication_connect_quorum, replication_timeout
--- replication_connect_timeout.
 -- If replication_connect_quorum was ignored here, the instance
 -- would exit with an error.
-test_run:cmd('start server replica_quorum with wait=True, wait_load=True, args="1 0.05 0.1"')
+test_run:cmd('start server replica_quorum with wait=True, wait_load=True, args="1 0.05"')
 test_run:cmd('switch replica_quorum')
 -- If replication_connect_quorum was ignored here, the instance
 -- would exit with an error.
diff --git a/test/replication/rebootstrap.lua b/test/replication/rebootstrap.lua
index 3e7d8f062..e8405e9d9 100644
--- a/test/replication/rebootstrap.lua
+++ b/test/replication/rebootstrap.lua
@@ -6,7 +6,6 @@ local INSTANCE_ID = string.match(arg[0], "%d")
 local SOCKET_DIR = require('fio').cwd()
 
 local TIMEOUT = tonumber(arg[1])
-local CON_TIMEOUT = arg[2] and tonumber(arg[2]) or 30.0
 
 local function instance_uri(instance_id)
     return SOCKET_DIR..'/rebootstrap'..instance_id..'.sock';
@@ -19,7 +18,6 @@ box.cfg({
     listen = instance_uri(INSTANCE_ID),
     instance_uuid = '12345678-abcd-1234-abcd-123456789ef' .. INSTANCE_ID,
     replication_timeout = TIMEOUT,
-    replication_connect_timeout = CON_TIMEOUT,
     replication = {
         instance_uri(1);
         instance_uri(2);
diff --git a/test/replication/rebootstrap.result b/test/replication/rebootstrap.result
index ea390c19f..d5e4d3967 100644
--- a/test/replication/rebootstrap.result
+++ b/test/replication/rebootstrap.result
@@ -20,11 +20,11 @@ test_run:cmd('stop server rebootstrap1')
 ---
 - true
 ...
-test_run:cmd('restart server rebootstrap2 with cleanup=True, wait=False, wait_load=False, args="0.1 2.0"')
+test_run:cmd('restart server rebootstrap2 with cleanup=True, wait=False, wait_load=False, args="0.1"')
 ---
 - true
 ...
-test_run:cmd('start server rebootstrap1 with args="0.1 0.5"')
+test_run:cmd('start server rebootstrap1 with args="0.1"')
 ---
 - true
 ...
diff --git a/test/replication/rebootstrap.test.lua b/test/replication/rebootstrap.test.lua
index 8ddf77912..f532c4305 100644
--- a/test/replication/rebootstrap.test.lua
+++ b/test/replication/rebootstrap.test.lua
@@ -12,8 +12,8 @@ test_run:wait_fullmesh(SERVERS)
 -- in 'orphan' mode.
 --
 test_run:cmd('stop server rebootstrap1')
-test_run:cmd('restart server rebootstrap2 with cleanup=True, wait=False, wait_load=False, args="0.1 2.0"')
-test_run:cmd('start server rebootstrap1 with args="0.1 0.5"')
+test_run:cmd('restart server rebootstrap2 with cleanup=True, wait=False, wait_load=False, args="0.1"')
+test_run:cmd('start server rebootstrap1 with args="0.1"')
 test_run:cmd('switch rebootstrap1')
 box.info.status -- running
 
diff --git a/test/replication/recover_missing_xlog.result b/test/replication/recover_missing_xlog.result
index ef4c29e50..f240be633 100644
--- a/test/replication/recover_missing_xlog.result
+++ b/test/replication/recover_missing_xlog.result
@@ -69,7 +69,7 @@ fio.unlink(list[#list])
 ---
 - true
 ...
-test_run:cmd('start server autobootstrap1 with args="0.1 0.5"')
+test_run:cmd('start server autobootstrap1 with args="0.1"')
 ---
 - true
 ...
diff --git a/test/replication/recover_missing_xlog.test.lua b/test/replication/recover_missing_xlog.test.lua
index 2cd73520f..499107e94 100644
--- a/test/replication/recover_missing_xlog.test.lua
+++ b/test/replication/recover_missing_xlog.test.lua
@@ -29,7 +29,7 @@ fio = require('fio')
 -- in 'read-only' mode unless it receives all data.
 list = fio.glob(fio.pathjoin(fio.abspath("."), 'autobootstrap1/*.xlog'))
 fio.unlink(list[#list])
-test_run:cmd('start server autobootstrap1 with args="0.1 0.5"')
+test_run:cmd('start server autobootstrap1 with args="0.1"')
 
 test_run:cmd("switch autobootstrap1")
 for i = 10, 19 do box.space.test:insert{i, 'test' .. i} end
diff --git a/test/replication/replica.lua b/test/replication/replica.lua
index 20ac064e1..b8ab87c33 100644
--- a/test/replication/replica.lua
+++ b/test/replication/replica.lua
@@ -5,7 +5,6 @@ box.cfg({
     replication         = os.getenv("MASTER"),
     memtx_memory        = 107374182,
     replication_timeout = 0.1,
-    replication_connect_timeout = 0.5,
 })
 
 require('console').listen(os.getenv('ADMIN'))
diff --git a/test/replication/replica_auth.lua b/test/replication/replica_auth.lua
index 22ba9146c..61d046fc4 100644
--- a/test/replication/replica_auth.lua
+++ b/test/replication/replica_auth.lua
@@ -2,7 +2,6 @@
 
 local USER_PASS = arg[1]
 local TIMEOUT = arg[2] and tonumber(arg[2]) or 0.1
-local CON_TIMEOUT = arg[3] and tonumber(arg[3]) or 30.0
 
 require('console').listen(os.getenv('ADMIN'))
 
@@ -10,5 +9,4 @@ box.cfg({
     listen = os.getenv("LISTEN"),
     replication = USER_PASS .. "@" .. os.getenv("MASTER"),
     replication_timeout = TIMEOUT,
-    replication_connect_timeout = CON_TIMEOUT
 })
diff --git a/test/replication/replica_no_quorum.lua b/test/replication/replica_no_quorum.lua
index c30c043cc..5868eb77b 100644
--- a/test/replication/replica_no_quorum.lua
+++ b/test/replication/replica_no_quorum.lua
@@ -6,7 +6,6 @@ box.cfg({
     memtx_memory        = 107374182,
     replication_connect_quorum = 0,
     replication_timeout = 0.1,
-    replication_connect_timeout = 0.5,
 })
 
 require('console').listen(os.getenv('ADMIN'))
diff --git a/test/replication/replica_quorum.lua b/test/replication/replica_quorum.lua
index dd42b8214..fe51da802 100644
--- a/test/replication/replica_quorum.lua
+++ b/test/replication/replica_quorum.lua
@@ -4,7 +4,6 @@ local SOCKET_DIR = require('fio').cwd()
 
 local QUORUM = tonumber(arg[1])
 local TIMEOUT = arg[2] and tonumber(arg[2]) or 0.1
-local CON_TIMEOUT = arg[3] and tonumber(arg[3]) or 30.0
 INSTANCE_URI = SOCKET_DIR .. '/replica_quorum.sock'
 
 function nonexistent_uri(id)
@@ -16,7 +15,6 @@ require('console').listen(os.getenv('ADMIN'))
 box.cfg{
     listen = INSTANCE_URI,
     replication_timeout = TIMEOUT,
-    replication_connect_timeout = CON_TIMEOUT,
     replication_connect_quorum = QUORUM,
     replication = {INSTANCE_URI,
                    nonexistent_uri(1),
diff --git a/test/replication/replica_timeout.lua b/test/replication/replica_timeout.lua
index 38922fa3d..34fd9f946 100644
--- a/test/replication/replica_timeout.lua
+++ b/test/replication/replica_timeout.lua
@@ -1,14 +1,12 @@
 #!/usr/bin/env tarantool
 
 local TIMEOUT = tonumber(arg[1])
-local CON_TIMEOUT = arg[2] and tonumber(arg[2]) or 30.0
 
 box.cfg({
     listen              = os.getenv("LISTEN"),
     replication         = os.getenv("MASTER"),
     memtx_memory        = 107374182,
     replication_timeout = TIMEOUT,
-    replication_connect_timeout = CON_TIMEOUT,
 })
 
 require('console').listen(os.getenv('ADMIN'))
diff --git a/test/replication/replica_uuid.lua b/test/replication/replica_uuid.lua
index 4343cfd5b..72138428a 100644
--- a/test/replication/replica_uuid.lua
+++ b/test/replication/replica_uuid.lua
@@ -6,7 +6,6 @@ box.cfg({
     replication         = os.getenv("MASTER"),
     memtx_memory        = 107374182,
     replication_timeout = 0.1,
-    replication_connect_timeout = 0.5,
 })
 
 require('console').listen(os.getenv('ADMIN'))
diff --git a/test/replication/replica_uuid_ro.lua b/test/replication/replica_uuid_ro.lua
index d5ba55852..5c1a2f5b6 100644
--- a/test/replication/replica_uuid_ro.lua
+++ b/test/replication/replica_uuid_ro.lua
@@ -7,7 +7,6 @@ local PASSWORD = 'somepassword'
 local SOCKET_DIR = require('fio').cwd()
 
 local TIMEOUT = tonumber(arg[2])
-local CON_TIMEOUT = arg[3] and tonumber(arg[3]) or 30.0
 
 local function instance_uri(instance_id)
     --return 'localhost:'..(3310 + instance_id)
@@ -27,7 +26,6 @@ box.cfg({
     };
     read_only = (INSTANCE_ID ~= '1' and true or false);
     replication_timeout = TIMEOUT;
-    replication_connect_timeout = CON_TIMEOUT;
 })
 
 box.once("bootstrap", function()
diff --git a/test/replication/replicaset_ro_mostly.result b/test/replication/replicaset_ro_mostly.result
index 1ce7d6f8e..a471779d3 100644
--- a/test/replication/replicaset_ro_mostly.result
+++ b/test/replication/replicaset_ro_mostly.result
@@ -27,7 +27,7 @@ UUID = sort({uuid1, uuid2}, sort_cmp)
 create_cluster_cmd1 = 'create server %s with script="replication/%s.lua"'
 ---
 ...
-create_cluster_cmd2 = 'start server %s with args="%s %s", wait_load=False, wait=False'
+create_cluster_cmd2 = 'start server %s with args="%s", wait_load=False, wait=False'
 ---
 ...
 test_run:cmd("setopt delimiter ';'")
diff --git a/test/replication/replicaset_ro_mostly.test.lua b/test/replication/replicaset_ro_mostly.test.lua
index c75af7218..19cd1fe4a 100644
--- a/test/replication/replicaset_ro_mostly.test.lua
+++ b/test/replication/replicaset_ro_mostly.test.lua
@@ -12,7 +12,7 @@ function sort(t) table.sort(t, sort_cmp) return t end
 UUID = sort({uuid1, uuid2}, sort_cmp)
 
 create_cluster_cmd1 = 'create server %s with script="replication/%s.lua"'
-create_cluster_cmd2 = 'start server %s with args="%s %s", wait_load=False, wait=False'
+create_cluster_cmd2 = 'start server %s with args="%s", wait_load=False, wait=False'
 
 test_run:cmd("setopt delimiter ';'")
 function create_cluster_uuid(servers, uuids)
diff --git a/test/replication/wal_off.lua b/test/replication/wal_off.lua
index cfd488e4d..9da53ba98 100644
--- a/test/replication/wal_off.lua
+++ b/test/replication/wal_off.lua
@@ -6,7 +6,6 @@ box.cfg({
     memtx_memory        = 107374182,
     wal_mode            = 'none',
     replication_timeout = 0.1,
-    replication_connect_timeout = 0.5,
 })
 
 require('console').listen(os.getenv('ADMIN'))
-- 
2.17.1

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Tarantool-patches] [PATCH v1 2/2] gitlab-ci: ASAN testing memory leaks add
  2019-11-21  8:25 [Tarantool-patches] [PATCH v1 0/2] Add LSAN to ASAN testing Alexander V. Tikhonov
  2019-11-21  8:25 ` [Tarantool-patches] [PATCH v1 1/2] test: use default replication connection timeout Alexander V. Tikhonov
@ 2019-11-21  8:25 ` Alexander V. Tikhonov
  2020-01-14 23:23   ` Igor Munkin
  2020-04-02  7:53 ` [Tarantool-patches] [PATCH v1 0/2] Add LSAN to ASAN testing Kirill Yukhin
  2 siblings, 1 reply; 8+ messages in thread
From: Alexander V. Tikhonov @ 2019-11-21  8:25 UTC (permalink / raw)
  To: Igor Munkin; +Cc: tarantool-patches

Added memory leaks detection to ASAN testing. Added files for exceptions:
 - address sanitizer on compilation:  asan/ignore_asan.txt
 - memory leak sanitizer on run-time: asan/ignore_lsan.txt
Cmake updated with asan/ignore_asan.txt file added and test run rules
changed with asan/ignore_lsan.txt file. Added 'engine' and replication'
suites into the testing and blocked 'box/on_shutdown.test.lua' test
that breaks the testing, all of excepted tests will be enabled durring
issue #4360.

Close #2058
---
 .travis.mk                    |  13 +++--
 asan/ignore_asan.txt          |  17 ++++++
 asan/ignore_lsan.txt          | 105 ++++++++++++++++++++++++++++++++++
 cmake/profile.cmake           |   4 +-
 test/box/on_shutdown.skipcond |   7 +++
 5 files changed, 138 insertions(+), 8 deletions(-)
 create mode 100644 asan/ignore_asan.txt
 create mode 100644 asan/ignore_lsan.txt
 create mode 100644 test/box/on_shutdown.skipcond

diff --git a/.travis.mk b/.travis.mk
index 42969ff56..c6bc82d41 100644
--- a/.travis.mk
+++ b/.travis.mk
@@ -111,15 +111,16 @@ coverage_debian: deps_debian test_coverage_debian_no_deps
 # ASAN
 
 build_asan_debian:
-	CC=clang-8 CXX=clang++-8 cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
-	CC=clang-8 CXX=clang++-8 cmake . -DENABLE_ASAN=ON ${CMAKE_EXTRA_PARAMS}
+	CC=clang-8 CXX=clang++-8 cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON -DENABLE_ASAN=ON ${CMAKE_EXTRA_PARAMS}
 	make -j
 
 test_asan_debian_no_deps: build_asan_debian
-	# temporary excluded engine/ and replication/ suites with some tests from other suites by issue #4360
-	cd test && ASAN=ON ASAN_OPTIONS=detect_leaks=0 ./test-run.py --force $(TEST_RUN_EXTRA_PARAMS) \
-		app/ app-tap/ box/ box-py/ box-tap/ engine_long/ long_run-py/ luajit-tap/ \
-		replication-py/ small/ sql/ sql-tap/ swim/ unit/ vinyl/ wal_off/ xlog/ xlog-py/
+	# temporary excluded some tests by issue #4360
+	# ASAN environment flag shows the excluded tests to skip the testing
+	cd test && ASAN=ON \
+		LSAN_OPTIONS=suppressions=${PWD}/asan/ignore_lsan.txt \
+		ASAN_OPTIONS=heap_profile=0:unmap_shadow_on_exit=1:detect_invalid_pointer_pairs=1:symbolize=1:detect_leaks=1:dump_instruction_bytes=1:print_suppressions=0 \
+		./test-run.py --force $(TEST_RUN_EXTRA_PARAMS)
 
 test_asan_debian: deps_debian deps_buster_clang_8 test_asan_debian_no_deps
 
diff --git a/asan/ignore_asan.txt b/asan/ignore_asan.txt
new file mode 100644
index 000000000..2a20114f4
--- /dev/null
+++ b/asan/ignore_asan.txt
@@ -0,0 +1,17 @@
+# File format:
+#fun:*
+#src:*
+
+# !test: app-tap/json.test.lua
+# source: third_party/lua-cjson/lua_cjson.c
+fun:json_decode
+
+# test: unit/base64.test.lua
+# source: third_party/base64.c
+fun:base64_decode_block
+# source: test/unit/base64.c
+fun:base64_test
+
+# !test: unit/msgpack.test
+# source: src/lib/msgpuck/test/msgpuck.c
+fun:test_mp_print
diff --git a/asan/ignore_lsan.txt b/asan/ignore_lsan.txt
new file mode 100644
index 000000000..a1237fb86
--- /dev/null
+++ b/asan/ignore_lsan.txt
@@ -0,0 +1,105 @@
+# File format:
+#leak:*
+
+# test: app/crypto.test.lua
+# source: /usr/lib/x86_64-linux-gnu/libcrypto.so
+leak:CRYPTO_zalloc
+
+# test: app-tap/http_client.test.lua
+# source: src/tarantool
+leak:Curl_setstropt
+leak:create_conn
+leak:Curl_conncache_add_conn
+leak:alloc_addbyter
+leak:Curl_getaddrinfo_ex
+leak:Curl_cache_addr
+leak:Curl_hash_init
+leak:Curl_hash_add
+leak:Curl_he2ai
+leak:Curl_open
+leak:Curl_resolver_init
+
+# test: app-tap/iconv.test.lua
+# source: /usr/lib/x86_64-linux-gnu/gconv/UTF-16.so
+leak:gconv_init
+
+# test: box*/
+# source: third_party/luajit
+leak:lj_BC_FUNCC
+
+# test: box/access.test.lua
+# test: box/access_bin.test.lua
+# test: box/access_misc.test.lua
+# source: src/box/error.cc
+leak:AccessDeniedError::AccessDeniedError
+
+# test: box/bitset.test.lua
+# source: src/lib/bitset/iterator.c
+leak:tt_bitset_iterator_init
+
+# test: box-py/args.test.py
+# source: /lib/x86_64-linux-gnu/libc.so*
+leak:libc.so*
+
+# test: box-tap/schema-mt.test.lua
+# source: src/lib/core/coio_task.c
+leak:coio_on_start
+# source: src/lib/salad/mhash.h
+leak:mh_i32ptr_new
+
+# test: replication/misc.test.lua
+# source: src/box/vy_log.c
+leak:vy_recovery_new_f
+# source: src/lib/salad/mhash.h
+leak:mh_i64ptr_new
+
+# test: sql-tap/gh2250-trigger-chain-limit.test.lua
+# source: src/lib/core/exception.cc
+leak:Exception::operator new
+
+# test: sql-tap/trigger9.test.lua
+# source: src/lib/core/fiber.c
+leak:cord_start
+
+# test: sql-tap/tkt-7bbfb7d442.test.lua
+# test: sql-tap/view.test.lua
+# test: sql-tap/with1.test.lua
+# test: sql-tap/with2.test.lua
+# source: src/box/sql/malloc.c
+leak:sql_sized_malloc
+
+# test: swim/errinj.test.lua
+# test: swim/swim.test.lua
+# source: src/lib/swim/swim.c
+leak:swim_member_new
+leak:swim_update_member_payload
+
+# !test: unit/bps_tree.test.lua
+# source: src/lib/salad/bps_tree.h
+leak:bps_tree_test_create_leaf
+leak:bps_tree_test_process_insert_leaf
+
+# !test: unit/heap.test.lua
+# source: test/unit/heap.c
+leak:test_random_delete_workload
+leak:test_delete_last_node
+
+# !test: unit/heap_iterator.test.lua
+# source: src/lib/salad/heap.h
+leak:test_heap_reserve
+
+# !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
+
+# test: vinyl/errinj_ddl.test.lua
+# source: src/box/vy_stmt.c
+leak:vy_stmt_alloc
+
+# test: vinyl/recover.test.lua
+# source: src/lib/core/fiber.c
+leak:cord_costart_thread_func
diff --git a/cmake/profile.cmake b/cmake/profile.cmake
index 0ba31fa2c..22e2fb2c9 100644
--- a/cmake/profile.cmake
+++ b/cmake/profile.cmake
@@ -53,7 +53,7 @@ if (ENABLE_ASAN)
             "\n")
     endif()
 
-    set(CMAKE_REQUIRED_FLAGS "-fsanitize=address")
+    set(CMAKE_REQUIRED_FLAGS "-fsanitize=address -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/asan/ignore_asan.txt")
     check_c_source_compiles("int main(void) {
         #include <sanitizer/asan_interface.h>
         void *x;
@@ -76,5 +76,5 @@ if (ENABLE_ASAN)
         message(FATAL_ERROR "Cannot enable AddressSanitizer")
     endif()
 
-    add_compile_flags("C;CXX" -fsanitize=address)
+    add_compile_flags("C;CXX" -fsanitize=address -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/asan/ignore_asan.txt)
 endif()
diff --git a/test/box/on_shutdown.skipcond b/test/box/on_shutdown.skipcond
new file mode 100644
index 000000000..e46fd1088
--- /dev/null
+++ b/test/box/on_shutdown.skipcond
@@ -0,0 +1,7 @@
+import os
+
+# Disabled at ASAN build due to issue #4360.
+if os.getenv("ASAN") == 'ON':
+    self.skip = 1
+
+# vim: set ft=python:
-- 
2.17.1

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Tarantool-patches] [PATCH v1 1/2] test: use default replication connection timeout
  2019-11-21  8:25 ` [Tarantool-patches] [PATCH v1 1/2] test: use default replication connection timeout Alexander V. Tikhonov
@ 2020-01-14 23:23   ` Igor Munkin
  2020-01-20  5:06     ` Alexander Tikhonov
  0 siblings, 1 reply; 8+ messages in thread
From: Igor Munkin @ 2020-01-14 23:23 UTC (permalink / raw)
  To: Alexander V. Tikhonov; +Cc: tarantool-patches

Sasha,

Thanks, the patch LGTM, though as discussed offline I see no relation to
ASAN. So I propose to reword the commit message as the following:
| All local connection timeout settings not related to the testing
| scenario are removed within this change. Instead of removed values the
| default one from src/box/lua/load_cfg.lua will be used. The approach
| with a single default value helps to avoid flaky test results
| regarding different timeout values and makes the future maintainence
| easier.
|
| The change is required for LSAN and ASAN testing machinery since it
| introduces a little overhead and cause failures for tests with
| excessively strict time limits.
|
| Needed for #2058

Feel free to adjust it on your own way.

On 21.11.19, Alexander V. Tikhonov wrote:
> Removed all local connection timeout setups, where it is not the part
> of the testing scenario. Instead of it the default value will be used.
> Also it is more comfortable to change the single default value instead
> of the change this value at each of the test scenarios, it will help
> to avoid of flaky results in tests beacuse of different timeout vlaues.

Typo: s/vlaues/values/.
Typo: s/beacuse/because/.

> The most of tests used the replication connection timeout is equal to
> 0.5 second, while defualt value is set at sources file:

Typo: s/defualt/default/.

>     src/box/lua/load_cfg.lua
> to the value of 30 seconds:
>     replication_connect_timeout = 30
> which is quite enough for all of the tests that don't need any special
> values for it.
> 
> Part of #2058
> ---

<snipped>

> -- 
> 2.17.1
> 

-- 
Best regards,
IM

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Tarantool-patches] [PATCH v1 2/2] gitlab-ci: ASAN testing memory leaks add
  2019-11-21  8:25 ` [Tarantool-patches] [PATCH v1 2/2] gitlab-ci: ASAN testing memory leaks add Alexander V. Tikhonov
@ 2020-01-14 23:23   ` Igor Munkin
  2020-01-20  5:26     ` Alexander Tikhonov
  0 siblings, 1 reply; 8+ messages in thread
From: Igor Munkin @ 2020-01-14 23:23 UTC (permalink / raw)
  To: Alexander V. Tikhonov; +Cc: tarantool-patches

Sasha,

Thanks for the patch! I left some notes below, please consider them.

On 21.11.19, Alexander V. Tikhonov wrote:

> gitlab-ci: ASAN testing memory leaks add
IMHO the commit subject should be adjusted as the following:
| gitlab-ci: add memory leaks detection via LSAN

> Added memory leaks detection to ASAN testing. Added files for exceptions:
>  - address sanitizer on compilation:  asan/ignore_asan.txt
>  - memory leak sanitizer on run-time: asan/ignore_lsan.txt
> Cmake updated with asan/ignore_asan.txt file added and test run rules
> changed with asan/ignore_lsan.txt file. Added 'engine' and replication'
> suites into the testing and blocked 'box/on_shutdown.test.lua' test
> that breaks the testing, all of excepted tests will be enabled durring
> issue #4360.
> 
> Close #2058

I propose to reword the commit message as the following:
| The change enables memory leaks detection to existing ASAN testing
| routine and introduces suppression files with the corresponding
| exception list:
| * address sanitizer for compile-time: asan/asan.supp
| * memory leak sanitizer for run-time: asan/lsan.supp
|
| Furthermore, added engine and replication suites for ASAN testing
| routine.
|
| Additionally to the tests blacklisted within #4359,
| 'box/on_shutdown.test.lua' is also disabled since it fails the
| introduced leak check. All blacklisted tests have to be enabled
| within #4360.
|
| Closes #2058

Feel free to adjust it on your own way.

> ---
>  .travis.mk                    |  13 +++--
>  asan/ignore_asan.txt          |  17 ++++++
>  asan/ignore_lsan.txt          | 105 ++++++++++++++++++++++++++++++++++
>  cmake/profile.cmake           |   4 +-
>  test/box/on_shutdown.skipcond |   7 +++
>  5 files changed, 138 insertions(+), 8 deletions(-)
>  create mode 100644 asan/ignore_asan.txt
>  create mode 100644 asan/ignore_lsan.txt
>  create mode 100644 test/box/on_shutdown.skipcond
> 
> diff --git a/.travis.mk b/.travis.mk
> index 42969ff56..c6bc82d41 100644
> --- a/.travis.mk
> +++ b/.travis.mk
> @@ -111,15 +111,16 @@ coverage_debian: deps_debian test_coverage_debian_no_deps
>  # ASAN
>  
>  build_asan_debian:
> -	CC=clang-8 CXX=clang++-8 cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
> -	CC=clang-8 CXX=clang++-8 cmake . -DENABLE_ASAN=ON ${CMAKE_EXTRA_PARAMS}

Side note: have no idea why it had been divided into separate commands.

> +	CC=clang-8 CXX=clang++-8 cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON -DENABLE_ASAN=ON ${CMAKE_EXTRA_PARAMS}
>  	make -j
>  
>  test_asan_debian_no_deps: build_asan_debian
> -	# temporary excluded engine/ and replication/ suites with some tests from other suites by issue #4360
> -	cd test && ASAN=ON ASAN_OPTIONS=detect_leaks=0 ./test-run.py --force $(TEST_RUN_EXTRA_PARAMS) \
> -		app/ app-tap/ box/ box-py/ box-tap/ engine_long/ long_run-py/ luajit-tap/ \
> -		replication-py/ small/ sql/ sql-tap/ swim/ unit/ vinyl/ wal_off/ xlog/ xlog-py/
> +	# temporary excluded some tests by issue #4360
> +	# ASAN environment flag shows the excluded tests to skip the testing

As discussed offline, please drop a comment related to the difference in
applying suppressions for LSAN and ASAN.

> +	cd test && ASAN=ON \
> +		LSAN_OPTIONS=suppressions=${PWD}/asan/ignore_lsan.txt \
> +		ASAN_OPTIONS=heap_profile=0:unmap_shadow_on_exit=1:detect_invalid_pointer_pairs=1:symbolize=1:detect_leaks=1:dump_instruction_bytes=1:print_suppressions=0 \
> +		./test-run.py --force $(TEST_RUN_EXTRA_PARAMS)
>  
>  test_asan_debian: deps_debian deps_buster_clang_8 test_asan_debian_no_deps
>  

I propose to name suppresion lists in more traditional for such tools
way:
* s/ignore_asan.txt/asan.supp/
* s/ignore_lsan.txt/lsan.supp/

> diff --git a/asan/ignore_asan.txt b/asan/ignore_asan.txt
> new file mode 100644
> index 000000000..2a20114f4
> --- /dev/null
> +++ b/asan/ignore_asan.txt
> @@ -0,0 +1,17 @@
> +# File format:
> +#fun:*
> +#src:*
> +
> +# !test: app-tap/json.test.lua
> +# source: third_party/lua-cjson/lua_cjson.c
> +fun:json_decode
> +
> +# test: unit/base64.test.lua
> +# source: third_party/base64.c
> +fun:base64_decode_block
> +# source: test/unit/base64.c
> +fun:base64_test
> +
> +# !test: unit/msgpack.test
> +# source: src/lib/msgpuck/test/msgpuck.c
> +fun:test_mp_print
> diff --git a/asan/ignore_lsan.txt b/asan/ignore_lsan.txt
> new file mode 100644
> index 000000000..a1237fb86
> --- /dev/null
> +++ b/asan/ignore_lsan.txt
> @@ -0,0 +1,105 @@
> +# File format:
> +#leak:*
> +
> +# test: app/crypto.test.lua
> +# source: /usr/lib/x86_64-linux-gnu/libcrypto.so
> +leak:CRYPTO_zalloc
> +
> +# test: app-tap/http_client.test.lua
> +# source: src/tarantool
> +leak:Curl_setstropt
> +leak:create_conn
> +leak:Curl_conncache_add_conn
> +leak:alloc_addbyter
> +leak:Curl_getaddrinfo_ex
> +leak:Curl_cache_addr
> +leak:Curl_hash_init
> +leak:Curl_hash_add
> +leak:Curl_he2ai
> +leak:Curl_open
> +leak:Curl_resolver_init
> +
> +# test: app-tap/iconv.test.lua
> +# source: /usr/lib/x86_64-linux-gnu/gconv/UTF-16.so
> +leak:gconv_init
> +
> +# test: box*/
> +# source: third_party/luajit
> +leak:lj_BC_FUNCC
> +
> +# test: box/access.test.lua
> +# test: box/access_bin.test.lua
> +# test: box/access_misc.test.lua
> +# source: src/box/error.cc
> +leak:AccessDeniedError::AccessDeniedError
> +
> +# test: box/bitset.test.lua
> +# source: src/lib/bitset/iterator.c
> +leak:tt_bitset_iterator_init
> +
> +# test: box-py/args.test.py
> +# source: /lib/x86_64-linux-gnu/libc.so*
> +leak:libc.so*
> +
> +# test: box-tap/schema-mt.test.lua
> +# source: src/lib/core/coio_task.c
> +leak:coio_on_start
> +# source: src/lib/salad/mhash.h
> +leak:mh_i32ptr_new
> +
> +# test: replication/misc.test.lua
> +# source: src/box/vy_log.c
> +leak:vy_recovery_new_f
> +# source: src/lib/salad/mhash.h
> +leak:mh_i64ptr_new
> +
> +# test: sql-tap/gh2250-trigger-chain-limit.test.lua
> +# source: src/lib/core/exception.cc
> +leak:Exception::operator new
> +
> +# test: sql-tap/trigger9.test.lua
> +# source: src/lib/core/fiber.c
> +leak:cord_start
> +
> +# test: sql-tap/tkt-7bbfb7d442.test.lua
> +# test: sql-tap/view.test.lua
> +# test: sql-tap/with1.test.lua
> +# test: sql-tap/with2.test.lua
> +# source: src/box/sql/malloc.c
> +leak:sql_sized_malloc
> +
> +# test: swim/errinj.test.lua
> +# test: swim/swim.test.lua
> +# source: src/lib/swim/swim.c
> +leak:swim_member_new
> +leak:swim_update_member_payload
> +
> +# !test: unit/bps_tree.test.lua
> +# source: src/lib/salad/bps_tree.h
> +leak:bps_tree_test_create_leaf
> +leak:bps_tree_test_process_insert_leaf
> +
> +# !test: unit/heap.test.lua
> +# source: test/unit/heap.c
> +leak:test_random_delete_workload
> +leak:test_delete_last_node
> +
> +# !test: unit/heap_iterator.test.lua
> +# source: src/lib/salad/heap.h
> +leak:test_heap_reserve
> +
> +# !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
> +
> +# test: vinyl/errinj_ddl.test.lua
> +# source: src/box/vy_stmt.c
> +leak:vy_stmt_alloc
> +
> +# test: vinyl/recover.test.lua
> +# source: src/lib/core/fiber.c
> +leak:cord_costart_thread_func
> diff --git a/cmake/profile.cmake b/cmake/profile.cmake
> index 0ba31fa2c..22e2fb2c9 100644
> --- a/cmake/profile.cmake
> +++ b/cmake/profile.cmake
> @@ -53,7 +53,7 @@ if (ENABLE_ASAN)
>              "\n")
>      endif()
>  
> -    set(CMAKE_REQUIRED_FLAGS "-fsanitize=address")
> +    set(CMAKE_REQUIRED_FLAGS "-fsanitize=address -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/asan/ignore_asan.txt")
>      check_c_source_compiles("int main(void) {
>          #include <sanitizer/asan_interface.h>
>          void *x;
> @@ -76,5 +76,5 @@ if (ENABLE_ASAN)
>          message(FATAL_ERROR "Cannot enable AddressSanitizer")
>      endif()
>  
> -    add_compile_flags("C;CXX" -fsanitize=address)
> +    add_compile_flags("C;CXX" -fsanitize=address -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/asan/ignore_asan.txt)
>  endif()
> diff --git a/test/box/on_shutdown.skipcond b/test/box/on_shutdown.skipcond
> new file mode 100644
> index 000000000..e46fd1088
> --- /dev/null
> +++ b/test/box/on_shutdown.skipcond
> @@ -0,0 +1,7 @@
> +import os
> +
> +# Disabled at ASAN build due to issue #4360.
> +if os.getenv("ASAN") == 'ON':
> +    self.skip = 1
> +
> +# vim: set ft=python:
> -- 
> 2.17.1
> 

As discussed offline, please send the follow-up patches for all other
branches if needed.

-- 
Best regards,
IM

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Tarantool-patches] [PATCH v1 1/2] test: use default replication connection timeout
  2020-01-14 23:23   ` Igor Munkin
@ 2020-01-20  5:06     ` Alexander Tikhonov
  0 siblings, 0 replies; 8+ messages in thread
From: Alexander Tikhonov @ 2020-01-20  5:06 UTC (permalink / raw)
  To: Igor Munkin; +Cc: tarantool-patches

[-- Attachment #1: Type: text/plain, Size: 1866 bytes --]

Igor,

Thanks for the review, I've changed the commit message as you suggested.


>Среда, 15 января 2020, 2:25 +03:00 от Igor Munkin <imun@tarantool.org>:
>
>Sasha,
>
>Thanks, the patch LGTM, though as discussed offline I see no relation to
>ASAN. So I propose to reword the commit message as the following:
>| All local connection timeout settings not related to the testing
>| scenario are removed within this change. Instead of removed values the
>| default one from src/box/lua/load_cfg.lua will be used. The approach
>| with a single default value helps to avoid flaky test results
>| regarding different timeout values and makes the future maintainence
>| easier.
>|
>| The change is required for LSAN and ASAN testing machinery since it
>| introduces a little overhead and cause failures for tests with
>| excessively strict time limits.
>|
>| Needed for #2058
>
>Feel free to adjust it on your own way.
>
>On 21.11.19, Alexander V. Tikhonov wrote:
>> Removed all local connection timeout setups, where it is not the part
>> of the testing scenario. Instead of it the default value will be used.
>> Also it is more comfortable to change the single default value instead
>> of the change this value at each of the test scenarios, it will help
>> to avoid of flaky results in tests beacuse of different timeout vlaues.
>
>Typo: s/vlaues/values/.
>Typo: s/beacuse/because/.
>
>> The most of tests used the replication connection timeout is equal to
>> 0.5 second, while defualt value is set at sources file:
>
>Typo: s/defualt/default/.
>
>>     src/box/lua/load_cfg.lua
>> to the value of 30 seconds:
>>     replication_connect_timeout = 30
>> which is quite enough for all of the tests that don't need any special
>> values for it.
>> 
>> Part of #2058
>> ---
>
><snipped>
>
>> -- 
>> 2.17.1
>> 
>
>-- 
>Best regards,
>IM


-- 
Alexander Tikhonov

[-- Attachment #2: Type: text/html, Size: 2508 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Tarantool-patches] [PATCH v1 2/2] gitlab-ci: ASAN testing memory leaks add
  2020-01-14 23:23   ` Igor Munkin
@ 2020-01-20  5:26     ` Alexander Tikhonov
  0 siblings, 0 replies; 8+ messages in thread
From: Alexander Tikhonov @ 2020-01-20  5:26 UTC (permalink / raw)
  To: Igor Munkin; +Cc: tarantool-patches

[-- Attachment #1: Type: text/plain, Size: 9199 bytes --]

Igor,

Thanks for the review, I've made all the changes as you suggested.


>Среда, 15 января 2020, 2:26 +03:00 от Igor Munkin <imun@tarantool.org>:
>
>Sasha,
>
>Thanks for the patch! I left some notes below, please consider them.
>
>On 21.11.19, Alexander V. Tikhonov wrote:
>
>> gitlab-ci: ASAN testing memory leaks add
>IMHO the commit subject should be adjusted as the following:
>| gitlab-ci: add memory leaks detection via LSAN
>
>> Added memory leaks detection to ASAN testing. Added files for exceptions:
>>  - address sanitizer on compilation:  asan/ignore_asan.txt
>>  - memory leak sanitizer on run-time: asan/ignore_lsan.txt
>> Cmake updated with asan/ignore_asan.txt file added and test run rules
>> changed with asan/ignore_lsan.txt file. Added 'engine' and replication'
>> suites into the testing and blocked 'box/on_shutdown.test.lua' test
>> that breaks the testing, all of excepted tests will be enabled durring
>> issue #4360.
>> 
>> Close #2058
>
>I propose to reword the commit message as the following:
>| The change enables memory leaks detection to existing ASAN testing
>| routine and introduces suppression files with the corresponding
>| exception list:
>| * address sanitizer for compile-time: asan/asan.supp
>| * memory leak sanitizer for run-time: asan/lsan.supp
>|
>| Furthermore, added engine and replication suites for ASAN testing
>| routine.
>|
>| Additionally to the tests blacklisted within #4359,
>| 'box/on_shutdown.test.lua' is also disabled since it fails the
>| introduced leak check. All blacklisted tests have to be enabled
>| within #4360.
>|
>| Closes #2058
>
>Feel free to adjust it on your own way. 
Rewrote as you suggested.
>
>
>> ---
>>  .travis.mk                    |  13 +++--
>>  asan/ignore_asan.txt          |  17 ++++++
>>  asan/ignore_lsan.txt          | 105 ++++++++++++++++++++++++++++++++++
>>  cmake/profile.cmake           |   4 +-
>>  test/box/on_shutdown.skipcond |   7 +++
>>  5 files changed, 138 insertions(+), 8 deletions(-)
>>  create mode 100644 asan/ignore_asan.txt
>>  create mode 100644 asan/ignore_lsan.txt
>>  create mode 100644 test/box/on_shutdown.skipcond
>> 
>> diff --git a/.travis.mk b/.travis.mk
>> index 42969ff56..c6bc82d41 100644
>> --- a/.travis.mk
>> +++ b/.travis.mk
>> @@ -111,15 +111,16 @@ coverage_debian: deps_debian test_coverage_debian_no_deps
>>  # ASAN
>> 
>>  build_asan_debian:
>> -	CC=clang-8 CXX=clang++-8 cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
>> -	CC=clang-8 CXX=clang++-8 cmake . -DENABLE_ASAN=ON ${CMAKE_EXTRA_PARAMS}
>
>Side note: have no idea why it had been divided into separate commands.
Previously it had some strange issues that were not reproduced for now,
so the command changed as it should be from the very start.
>
>
>> +	CC=clang-8 CXX=clang++-8 cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON -DENABLE_ASAN=ON ${CMAKE_EXTRA_PARAMS}
>>  	make -j
>> 
>>  test_asan_debian_no_deps: build_asan_debian
>> -	# temporary excluded engine/ and replication/ suites with some tests from other suites by issue #4360
>> -	cd test && ASAN=ON ASAN_OPTIONS=detect_leaks=0 ./test-run.py --force $(TEST_RUN_EXTRA_PARAMS) \
>> -		app/ app-tap/ box/ box-py/ box-tap/ engine_long/ long_run-py/ luajit-tap/ \
>> -		replication-py/ small/ sql/ sql-tap/ swim/ unit/ vinyl/ wal_off/ xlog/ xlog-py/
>> +	# temporary excluded some tests by issue #4360
>> +	# ASAN environment flag shows the excluded tests to skip the testing
>
>As discussed offline, please drop a comment related to the difference in
>applying suppressions for LSAN and ASAN. 
Added comments about ASAN/LSAN excluding tests files at build/run times.
>
>
>> +	cd test && ASAN=ON \
>> +		LSAN_OPTIONS=suppressions=${PWD}/asan/ignore_lsan.txt \
>> +		ASAN_OPTIONS=heap_profile=0:unmap_shadow_on_exit=1:detect_invalid_pointer_pairs=1:symbolize=1:detect_leaks=1:dump_instruction_bytes=1:print_suppressions=0 \
>> +		./test-run.py --force $(TEST_RUN_EXTRA_PARAMS)
>> 
>>  test_asan_debian: deps_debian deps_buster_clang_8 test_asan_debian_no_deps
>> 
>
>I propose to name suppresion lists in more traditional for such tools
>way:
>* s/ignore_asan.txt/asan.supp/
>* s/ignore_lsan.txt/lsan.supp/ 
Renamed.
>
>
>> diff --git a/asan/ignore_asan.txt b/asan/ignore_asan.txt
>> new file mode 100644
>> index 000000000..2a20114f4
>> --- /dev/null
>> +++ b/asan/ignore_asan.txt
>> @@ -0,0 +1,17 @@
>> +# File format:
>> +#fun:*
>> +#src:*
>> +
>> +# !test: app-tap/json.test.lua
>> +# source: third_party/lua-cjson/lua_cjson.c
>> +fun:json_decode
>> +
>> +# test: unit/base64.test.lua
>> +# source: third_party/base64.c
>> +fun:base64_decode_block
>> +# source: test/unit/base64.c
>> +fun:base64_test
>> +
>> +# !test: unit/msgpack.test
>> +# source: src/lib/msgpuck/test/msgpuck.c
>> +fun:test_mp_print
>> diff --git a/asan/ignore_lsan.txt b/asan/ignore_lsan.txt
>> new file mode 100644
>> index 000000000..a1237fb86
>> --- /dev/null
>> +++ b/asan/ignore_lsan.txt
>> @@ -0,0 +1,105 @@
>> +# File format:
>> +#leak:*
>> +
>> +# test: app/crypto.test.lua
>> +# source: /usr/lib/x86_64-linux-gnu/libcrypto.so
>> +leak:CRYPTO_zalloc
>> +
>> +# test: app-tap/http_client.test.lua
>> +# source: src/tarantool
>> +leak:Curl_setstropt
>> +leak:create_conn
>> +leak:Curl_conncache_add_conn
>> +leak:alloc_addbyter
>> +leak:Curl_getaddrinfo_ex
>> +leak:Curl_cache_addr
>> +leak:Curl_hash_init
>> +leak:Curl_hash_add
>> +leak:Curl_he2ai
>> +leak:Curl_open
>> +leak:Curl_resolver_init
>> +
>> +# test: app-tap/iconv.test.lua
>> +# source: /usr/lib/x86_64-linux-gnu/gconv/UTF-16.so
>> +leak:gconv_init
>> +
>> +# test: box*/
>> +# source: third_party/luajit
>> +leak:lj_BC_FUNCC
>> +
>> +# test: box/access.test.lua
>> +# test: box/access_bin.test.lua
>> +# test: box/access_misc.test.lua
>> +# source: src/box/error.cc
>> +leak:AccessDeniedError::AccessDeniedError
>> +
>> +# test: box/bitset.test.lua
>> +# source: src/lib/bitset/iterator.c
>> +leak:tt_bitset_iterator_init
>> +
>> +# test: box-py/args.test.py
>> +# source: /lib/x86_64-linux-gnu/libc.so*
>> +leak:libc.so*
>> +
>> +# test: box-tap/schema-mt.test.lua
>> +# source: src/lib/core/coio_task.c
>> +leak:coio_on_start
>> +# source: src/lib/salad/mhash.h
>> +leak:mh_i32ptr_new
>> +
>> +# test: replication/misc.test.lua
>> +# source: src/box/vy_log.c
>> +leak:vy_recovery_new_f
>> +# source: src/lib/salad/mhash.h
>> +leak:mh_i64ptr_new
>> +
>> +# test: sql-tap/gh2250-trigger-chain-limit.test.lua
>> +# source: src/lib/core/exception.cc
>> +leak:Exception::operator new
>> +
>> +# test: sql-tap/trigger9.test.lua
>> +# source: src/lib/core/fiber.c
>> +leak:cord_start
>> +
>> +# test: sql-tap/tkt-7bbfb7d442.test.lua
>> +# test: sql-tap/view.test.lua
>> +# test: sql-tap/with1.test.lua
>> +# test: sql-tap/with2.test.lua
>> +# source: src/box/sql/malloc.c
>> +leak:sql_sized_malloc
>> +
>> +# test: swim/errinj.test.lua
>> +# test: swim/swim.test.lua
>> +# source: src/lib/swim/swim.c
>> +leak:swim_member_new
>> +leak:swim_update_member_payload
>> +
>> +# !test: unit/bps_tree.test.lua
>> +# source: src/lib/salad/bps_tree.h
>> +leak:bps_tree_test_create_leaf
>> +leak:bps_tree_test_process_insert_leaf
>> +
>> +# !test: unit/heap.test.lua
>> +# source: test/unit/heap.c
>> +leak:test_random_delete_workload
>> +leak:test_delete_last_node
>> +
>> +# !test: unit/heap_iterator.test.lua
>> +# source: src/lib/salad/heap.h
>> +leak:test_heap_reserve
>> +
>> +# !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
>> +
>> +# test: vinyl/errinj_ddl.test.lua
>> +# source: src/box/vy_stmt.c
>> +leak:vy_stmt_alloc
>> +
>> +# test: vinyl/recover.test.lua
>> +# source: src/lib/core/fiber.c
>> +leak:cord_costart_thread_func
>> diff --git a/cmake/profile.cmake b/cmake/profile.cmake
>> index 0ba31fa2c..22e2fb2c9 100644
>> --- a/cmake/profile.cmake
>> +++ b/cmake/profile.cmake
>> @@ -53,7 +53,7 @@ if (ENABLE_ASAN)
>>              "\n")
>>      endif()
>> 
>> -    set(CMAKE_REQUIRED_FLAGS "-fsanitize=address")
>> +    set(CMAKE_REQUIRED_FLAGS "-fsanitize=address -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/asan/ignore_asan.txt")
>>      check_c_source_compiles("int main(void) {
>>          #include <sanitizer/asan_interface.h>
>>          void *x;
>> @@ -76,5 +76,5 @@ if (ENABLE_ASAN)
>>          message(FATAL_ERROR "Cannot enable AddressSanitizer")
>>      endif()
>> 
>> -    add_compile_flags("C;CXX" -fsanitize=address)
>> +    add_compile_flags("C;CXX" -fsanitize=address -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/asan/ignore_asan.txt)
>>  endif()
>> diff --git a/test/box/on_shutdown.skipcond b/test/box/on_shutdown.skipcond
>> new file mode 100644
>> index 000000000..e46fd1088
>> --- /dev/null
>> +++ b/test/box/on_shutdown.skipcond
>> @@ -0,0 +1,7 @@
>> +import os
>> +
>> +# Disabled at ASAN build due to issue #4360.
>> +if os.getenv("ASAN") == 'ON':
>> +    self.skip = 1
>> +
>> +# vim: set ft=python:
>> -- 
>> 2.17.1
>> 
>
>As discussed offline, please send the follow-up patches for all other
>branches if needed. 
Ok.
>
>
>-- 
>Best regards,
>IM


-- 
Alexander Tikhonov

[-- Attachment #2: Type: text/html, Size: 12089 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Tarantool-patches] [PATCH v1 0/2] Add LSAN to ASAN testing
  2019-11-21  8:25 [Tarantool-patches] [PATCH v1 0/2] Add LSAN to ASAN testing Alexander V. Tikhonov
  2019-11-21  8:25 ` [Tarantool-patches] [PATCH v1 1/2] test: use default replication connection timeout Alexander V. Tikhonov
  2019-11-21  8:25 ` [Tarantool-patches] [PATCH v1 2/2] gitlab-ci: ASAN testing memory leaks add Alexander V. Tikhonov
@ 2020-04-02  7:53 ` Kirill Yukhin
  2 siblings, 0 replies; 8+ messages in thread
From: Kirill Yukhin @ 2020-04-02  7:53 UTC (permalink / raw)
  To: Alexander V. Tikhonov; +Cc: tarantool-patches

Hello,

On 21 ноя 11:25, Alexander V. Tikhonov wrote:
> Added memory leaks detection LSAN to ASAN testing.
> Added files with exceptions:
>  - address sanitizer on compilation:  asan/ignore_asan.txt
>  - memory leak sanitizer on run-time: asan/ignore_lsan.txt
> Blocked 'box/on_shutdown.test.lua' test that breaks the
> testing, all of excepted tests will be enabled during
> issue #4360.
> Added 'engine' and replication' suites into the testing. To
> enable replication suite testing removed all local connection
> timeout setups, where it is not the part of the testing
> scenario. Instead of it the default value will be used, because
> the most of tests used the replication connection timeout is
> equal to 0.5 second, while default value is set at sources file:
>     src/box/lua/load_cfg.lua
> to the value of 30 seconds:
>     replication_connect_timeout = 30
> which is quite enough for all of the tests.
> 
> Close #2058
> ---
> 
> Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-2058-asan-with-leaks
> Issue: https://github.com/tarantool/tarantool/issues/2058

I've checked your patchset into 1.10, 2.2, 2.3 and master.

--
Regards, Kirill Yukhin

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-04-02  7:53 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-21  8:25 [Tarantool-patches] [PATCH v1 0/2] Add LSAN to ASAN testing Alexander V. Tikhonov
2019-11-21  8:25 ` [Tarantool-patches] [PATCH v1 1/2] test: use default replication connection timeout Alexander V. Tikhonov
2020-01-14 23:23   ` Igor Munkin
2020-01-20  5:06     ` Alexander Tikhonov
2019-11-21  8:25 ` [Tarantool-patches] [PATCH v1 2/2] gitlab-ci: ASAN testing memory leaks add Alexander V. Tikhonov
2020-01-14 23:23   ` Igor Munkin
2020-01-20  5:26     ` Alexander Tikhonov
2020-04-02  7:53 ` [Tarantool-patches] [PATCH v1 0/2] Add LSAN to ASAN testing Kirill Yukhin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox