Skip to content
Snippets Groups Projects
  1. Oct 26, 2023
    • Nikolay Shirokovskiy's avatar
      asan: suppress leak reports caused by JIT · 26b8a326
      Nikolay Shirokovskiy authored
      With ASAN-friendly small allocators there are a lot test failures due
      to leak reports which are gone if JIT is off.
      
      Fortunately all the reports related to a few functions. Let's suppress
      temporarily such reports.
      
      Part of #7327
      
      NO_TEST=internal
      NO_CHANGELOG=internal
      NO_DOC=internal
      
      (cherry picked from commit f0feb923)
      26b8a326
  2. Oct 10, 2023
  3. Aug 04, 2023
    • Igor Munkin's avatar
      asan: enable ASan and LSan support for LuaJIT back · e987aedb
      Igor Munkin authored
      All LuaJIT related LSan warnings were suppressed in the scope of the
      commit 985548e4 ("asan: suppress all
      LSAN warnings related to LuaJIT"), since all compiler flags tweaks were
      enclosed in LuaJIT CMake machinery. As a result of the commit in LuaJIT
      submodule tarantool/luajit@a86e376 ("build: introduce LUAJIT_USE_ASAN
      option") ASan and LSan support has been finally added to LuaJIT runtime,
      so it was decided to remove LSan suppressions for LuaJIT functions.
      Unfortunately, it was not so easy as it looked like.
      
      At first, Lua global state is not closed properly at Tarantool instance
      exit (see <tarantool_free> in src/main.cc and <tarantool_lua_free> in
      src/lua/init.c for more info), so LSan false-positive leaks are detected
      (for more info, see #3071). Hence, the original LSan suppression for
      lj_BC_FUNCC is returned back (temporarily) until the aforementioned
      issue is not resolved.
      
      Furthermore, the internal LuaJIT memory allocator is not instrumented
      yet, so to find any memory faults it's worth building LuaJIT with system
      provided memory allocator (i.e. enable LUAJIT_USE_SYSMALLOC option).
      However, again, since Tarantool doesn't finalize Lua universe the right
      way, so running Tarantool testing routine with LUAJIT_USE_SYSMALLOC
      enabled generates false-positive LSan leaks. Return back here to enable
      LUAJIT_USE_SYSMALLOC, when #3071 is resolved.
      
      Last but not least, the default value of fiber stack size is 512Kb, but
      several tests in test/PUC-Rio-Lua-5.1-test suite in LuaJIT submodule
      (e.g. some cases with deep recursion in errors.lua or pm.lua) have
      already been tweaked according to the limitations mentioned in #5782,
      but the crashes still occur while running LuaJIT tests with ASan support
      enabled. Experiments once again confirm the notorious quote that "640 Kb
      ought to be enough for anybody".
      
      Anyway, LuaJIT tests are added to <test-release-asan> target in .test.mk
      and LUAJIT_TEST_ENV is extended with required ASan and LSan options.
      
      Follows up #5878
      
      NO_DOC=ci
      NO_TEST=ci
      NO_CHANGELOG=ci
      
      (cherry picked from commit bacf4e56)
  4. Apr 14, 2021
    • Alexander V. Tikhonov's avatar
      test: ASAN leak on feedback demon call using cURL · c5049edc
      Alexander V. Tikhonov authored
      Found that after patch set of 5 commits:
      
        aa97a185 ("feedback_daemon: count and report some events")
        e9c9832a ("feedback_daemon: generate report right before sending")
        bc15e0f0 ("feedback_daemon: send feedback on server start")
        670acf0d ("feedback_daemon: rename `send_test` to `send`")
        c5d595bc ("feedback_daemon: include server uptime in the report")
      
      began to leak feedback demon on using cURL. To avoid of it decided to
      add LSAN suppresions:
      
        1. for /lib/x86_64-linux-gnu/libcrypto.so
           leak:libcrypto.so*
        2. for /lib/x86_64-linux-gnu/libssl.so
           leak:libssl.so*
      
      Needed for tarantool/tarantool-qa#116
      c5049edc
  5. Mar 16, 2021
  6. Oct 13, 2020
    • Alexander V. Tikhonov's avatar
      asan: add leak suppressions for flaky test · 389c12b4
      Alexander V. Tikhonov authored
      Met flaky issues on test:
      
        replication/gh-3637-misc-error-on-replica-auth-fail.test.lua
      
      Found memory leaks:
      
      [093] Last 15 lines of Tarantool Log file [Instance "replica_auth"][/builds/DtQXhC5e/0/tarantool/tarantool/test/var/093_replication/replica_auth.log]:
      [093]     #3 0xa13df8 in coio_on_call /builds/DtQXhC5e/0/tarantool/tarantool/src/lib/core/coio_task.c:264:16
      [093]     #4 0xfcedbe in eio_execute /builds/DtQXhC5e/0/tarantool/tarantool/third_party/libeio/eio.c:2015:9
      [093]     #5 0xfcedbe in etp_proc /builds/DtQXhC5e/0/tarantool/tarantool/third_party/libeio/etp.c:373
      [093]     #6 0x7f8c8260ffa2 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x7fa2)
      [093]
      [093] Indirect leak of 4 byte(s) in 1 object(s) allocated from:
      [093]     #0 0x525dfa in calloc (/builds/DtQXhC5e/0/tarantool/tarantool/src/tarantool+0x525dfa)
      [093]     #1 0xa2eb4a in mh_i64ptr_new /builds/DtQXhC5e/0/tarantool/tarantool/src/lib/salad/mhash.h:408:22
      [093]     #2 0x8a516d in vy_recovery_new_f /builds/DtQXhC5e/0/tarantool/tarantool/src/box/vy_log.c:2321:23
      [093]     #3 0xa13df8 in coio_on_call /builds/DtQXhC5e/0/tarantool/tarantool/src/lib/core/coio_task.c:264:16
      [093]     #4 0xfcedbe in eio_execute /builds/DtQXhC5e/0/tarantool/tarantool/third_party/libeio/eio.c:2015:9
      [093]     #5 0xfcedbe in etp_proc /builds/DtQXhC5e/0/tarantool/tarantool/third_party/libeio/etp.c:373
      [093]     #6 0x7f8c8260ffa2 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x7fa2)
      
      To stabilize testing these leaks added as suppressions to asan list.
      
      Part of #5343
      389c12b4
  7. Sep 23, 2020
    • Kirill Yukhin's avatar
      coio: fix cord leak on stop · 8477b6c0
      Kirill Yukhin authored
      cord_ptr variable is calloc()-ated in coio_on_start()
      and is not free()-ed, which triggers ASAN. free() it
      in coio_on_stop().
      
      Closes #5308
      8477b6c0
  8. Sep 11, 2020
    • Alexander V. Tikhonov's avatar
      asan: leak unit/swim.test:swim_test_encryption · ee9e3aed
      Alexander V. Tikhonov authored
      
      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: default avatarVladislav Shpilevoy <v.shpilevoy@tarantool.org>
      
      Co-authored-by: default avatarVladislav Shpilevoy <v.shpilevoy@tarantool.org>
      ee9e3aed
  9. Sep 09, 2020
  10. Aug 20, 2020
  11. Apr 02, 2020
    • Alexander V. Tikhonov's avatar
      gitlab-ci: add memory leaks detection via LSAN · e737400d
      Alexander V. Tikhonov authored
      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.
      
      Close #2058
      e737400d
Loading