[Tarantool-patches] [PATCH v1] test: fix box/push.test.lua for ASAN

Alexander V. Tikhonov avtikhon at tarantool.org
Wed May 27 18:20:05 MSK 2020


After commit:
03790ac5510648d1d9648bb2281857a7992d0593 ("cmake: remove dynamic-list linker option")

the issue with test initialy appeared:

 [001] box/push.test.lua
 [001]
 [001] [Instance "box" returns with non-zero exit code: 1]
 [001]
 [001] Last 15 lines of Tarantool Log file [Instance "box"][test/var/001_box/box.log]:
 [001] ==25624==ERROR: AddressSanitizer: odr-violation (0x000001123b60):
 [001]   [1] size=1024 'mp_type_hint' src/lib/msgpuck/hints.c:39:20
 [001]   [2] size=1024 'mp_type_hint' src/lib/msgpuck/hints.c:39:20
 [001] These globals were registered at these points:
 [001]   [1]:
 [001]     #0 0x478b8e in __asan_register_globals (src/tarantool+0x478b8e)
 [001]     #1 0x7ff7a9bc9d0b in asan.module_ctor (function1.so+0x6d0b)
 [001]
 [001]   [2]:
 [001]     #0 0x478b8e in __asan_register_globals (src/tarantool+0x478b8e)
 [001]     #1 0xab990b in asan.module_ctor (src/tarantool+0xab990b)
 [001]
 [001] ==25624==HINT: if you don't care about these errors you may set ASAN_OPTIONS=detect_odr_violation=0
 [001] SUMMARY: AddressSanitizer: odr-violation: global 'mp_type_hint' at src/lib/msgpuck/hints.c:39:20
 [001] ==25624==ABORTING
 [001] [ fail ]

the following issue was created:

  https://github.com/tarantool/tarantool/issues/5001

The fail was described there by Vladislav Shpilevoy:
"""
  I see why ASAN complains about mp_type_hint. This is because the
  symbol is defined both in Tarantool executable, and in the shared
  library function1.so. I think this is fine, and should be ignored.
  But it definitely has nothing to do with the current ticket. The
  problem existed always, but asan noticed it only now somewhy. And
  it is not a problem actually.
"""

He added suggestion to try RTLD_DEEPBIND, but in real it is not
supported on OSX and the same issue with discussion can be found here:

  https://github.com/root-project/root/pull/4668

The initial issue closed and the new one created especialy for the
test. The fix was made in ASAN suppresion list to block the ASAN
check for file:

  src/lib/msgpuck/hints.c

Closes #5023
---

Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-5023_fix-box-push-test-for-asan-full-ci
Issue: https://github.com/tarantool/tarantool/issues/5023

 asan/asan.supp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/asan/asan.supp b/asan/asan.supp
index 79c13ec7d..b806873a5 100644
--- a/asan/asan.supp
+++ b/asan/asan.supp
@@ -9,6 +9,10 @@
 # source: third_party/lua-cjson/lua_cjson.c
 fun:json_decode
 
+# test: box/push.test.lua
+# source: src/lib/msgpuck/hints.c:39:20
+src:*src/lib/msgpuck/hints.c
+
 # test: unit/base64.test.lua
 # source: third_party/base64.c
 fun:base64_decode_block
-- 
2.17.1



More information about the Tarantool-patches mailing list