Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: need to fix exclusions at ASAN/LSAN testings #4360

Closed
avtikhon opened this issue Jul 17, 2019 · 4 comments
Closed

test: need to fix exclusions at ASAN/LSAN testings #4360

avtikhon opened this issue Jul 17, 2019 · 4 comments
Assignees
Labels
bug Something isn't working qa Issues related to tests or testing subsystem
Milestone

Comments

@avtikhon
Copy link
Contributor

avtikhon commented Jul 17, 2019

Tarantool version:

OS version:
Debian

Bug description:
https://github.com/google/sanitizers/wiki/AddressSanitizer
https://groups.google.com/forum/#!forum/address-sanitizer
https://github.com/google/sanitizers/wiki/AddressSanitizerFlags
https://clang.llvm.org/docs/AddressSanitizer.html#issue-suppression

NOTE: more aggressive version to run is

CFLAGS += -fsanitize-address-use-after-scope
ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1

Exclusion rules:
https://clang.llvm.org/docs/AddressSanitizer.html#suppressing-reports-in-external-libraries

# Suppress error reports for code in a file or in a function:
src:bad_file.cpp
# Ignore all functions with names containing MyFooBar:
fun:*MyFooBar*
# Disable out-of-bound checks for global:
global:bad_array
# Disable out-of-bound checks for global instances of a given class ...
type:Namespace::BadClassName
# ... or a given struct. Use wildcard to deal with anonymous namespace.
type:Namespace2::*::BadStructName
# Disable initialization-order checks for globals:
global:bad_init_global=init
type:*BadInitClassSubstring*=init
src:bad/init/files/*=init

WARNING: To check the code on each edit use:

git submodule foreach git clean -xfd ; make -f .travis.mk test_asan_debian_no_deps

Some suites and tests were skipped from ASAN testing:

  • engine/
  • replication/
  • app-tap/json.test.lua
  • unit/msgpack.test
  • unit/guard.test

Steps to reproduce:

Optional (but very desirable):

  • coredump
  • backtrace
  • netstat
@avtikhon avtikhon self-assigned this Jul 17, 2019
avtikhon added a commit that referenced this issue Jul 17, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in travis-ci, changed it to the same as in gitlab-ci,
changed default clang to clang-8.

Closes #4359
avtikhon added a commit that referenced this issue Jul 17, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in travis-ci, changed it to the same as in gitlab-ci,
changed default clang to clang-8.

Closes #4359
avtikhon added a commit that referenced this issue Jul 17, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in travis-ci, changed it to the same as in gitlab-ci,
changed default clang to clang-8.

Closes #4359
avtikhon added a commit that referenced this issue Jul 17, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in travis-ci, changed it to the same as in gitlab-ci,
changed default clang to clang-8.

Closes #4359
avtikhon added a commit that referenced this issue Jul 17, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in travis-ci, changed it to the same as in gitlab-ci,
changed default clang to clang-8.

Closes #4359
avtikhon added a commit that referenced this issue Jul 17, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in travis-ci, changed it to the same as in gitlab-ci,
changed default clang to clang-8.

Closes #4359
avtikhon added a commit that referenced this issue Jul 17, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in travis-ci, changed it to the same as in gitlab-ci,
changed default clang to clang-8.

Closes #4359
avtikhon added a commit that referenced this issue Jul 17, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in travis-ci, changed it to the same as in gitlab-ci,
changed default clang to clang-8.

Closes #4359
@avtikhon avtikhon added the qa Issues related to tests or testing subsystem label Jul 18, 2019
avtikhon added a commit that referenced this issue Jul 18, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in travis-ci, changed it to the same as in gitlab-ci,
changed default clang to clang-8.

Closes #4359
avtikhon added a commit that referenced this issue Jul 18, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in travis-ci, changed it to the same as in gitlab-ci,
changed default clang to clang-8.

Closes #4359
@kyukhin kyukhin added the bug Something isn't working label Jul 18, 2019
@kyukhin kyukhin added this to the 2.3.0 milestone Jul 18, 2019
kyukhin pushed a commit that referenced this issue Jul 19, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in travis-ci, changed it to the same as in gitlab-ci,
changed default clang to clang-8.

Closes #4359
@kostja kostja modified the milestones: 2.3.1, QA Aug 6, 2019
avtikhon added a commit that referenced this issue Aug 22, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in travis-ci, changed it to the same as in gitlab-ci,
changed default clang to clang-8.

Closes #4359
avtikhon added a commit that referenced this issue Nov 6, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360. Also
fixed job for testing LTO with clang on debian-buster
in gitlab-ci, changed default clang to clang-8.

Closes #4359
avtikhon added a commit that referenced this issue Nov 6, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360.

Closes #4359

(cherry picked from commit 55f7586)
avtikhon added a commit that referenced this issue Nov 6, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360.

Closes #4359

(cherry picked from commit 55f7586)
avtikhon added a commit that referenced this issue Nov 6, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360.

Closes #4359

(cherry picked from commit 55f7586)
avtikhon added a commit that referenced this issue Nov 6, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled durring issue #4360.

Closes #4359

(cherry picked from commit 55f7586)
avtikhon added a commit that referenced this issue Nov 20, 2019
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 some tests that break the testing,
all of excepted tests will be enabled durring issue #4360.

Close #2058
avtikhon added a commit that referenced this issue Nov 20, 2019
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 some tests that break the testing,
all of excepted tests will be enabled durring issue #4360.

Close #2058
avtikhon added a commit that referenced this issue Nov 21, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled during issue #4360.
On cherry pick changes for LTO were not used, due to
LTO testing is not needed on 1.10.

Closes #4359

(partly cherry picked from commit 55f7586)
avtikhon added a commit that referenced this issue Nov 21, 2019
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 some tests that break the testing,
all of excepted tests will be enabled durring issue #4360.

Close #2058
avtikhon added a commit that referenced this issue Nov 21, 2019
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
avtikhon added a commit that referenced this issue Nov 21, 2019
Added ASAN tesing in commit process, used clang-8 for
ASAN build under debian-buster image. Added for testing
only the passing test suites, the rest of the tests
not used and will be enabled during issue #4360.
On cherry pick changes for LTO were not used, due to
LTO testing is not needed on 1.10.
Also added skip condition file for test 'box/func_reload'
which fails only on 1.10 with ASAN.

Closes #4359

(partly cherry picked from commit 55f7586)

t
avtikhon added a commit that referenced this issue Aug 24, 2020
In asan/lsan check found common leaks after strdup() function,
because of its internal allocations in AccessDeniedError class
for m_object_name, m_object_type, m_access_type buffers:

  Indirect leak of 24 byte(s) in 4 object(s) allocated from:
    #0 0x50b550 in __interceptor_strdup (/tnt/src/tarantool+0x50b550)
    #1 0xd71a98 in AccessDeniedError::AccessDeniedError(char const*, unsigned int, char const*, char const*, char const*, char const*, bool) /tarantool/src/box/error.cc:309:18
    #2 0xd71c5b in BuildAccessDeniedError /tarantool/src/box/error.cc:319:14
    #3 0x567864 in access_check_space /tarantool/src/box/space.c:91:5
    #4 0x55e58b in check_index(unsigned int, unsigned int, space**, index**) /tarantool/src/box/index.cc:172:6
    #5 0x55e58b in box_index_max /tarantool/src/box/index.cc:296
    #6 0x2abfea88  (<unknown module>)

To fix the found issues better to use local memory allocation in stack
for these buffers. In the same situation in a common CustomError class
m_custom_type buffer was locally allocated with 64 size. So the buffers
were changed from strdup() function internal allocation to local setup
with the same size.

Suppresion "leak:AccessDeniedError::AccessDeniedError" removed from
asan suppressions file.

Part of #4360
avtikhon added a commit that referenced this issue Aug 26, 2020
Found that after commit:

  eec54b5 "asan/lsan: cleanup suppression lists"

where was removed blocking file unit/guard.skipcond for asan testing,
it was needed much more fixes from #4609, to enable this test on asan.
After investigation the group of needed patches to be ported decided
not to use it for 2.4 release branch and to restore the skip condition
file to block the issue with the test to restore the release branch
stability.

Part of #4360
avtikhon added a commit that referenced this issue Aug 26, 2020
Found that box/on_shutdown.test.lua test fails on asan build with:

  2020-08-26 09:04:06.750 [42629] main/102/on_shutdown [string "_ = box.ctl.on_shutdown(function() log.warn("..."]:1 W> on_shutdown 5
  Starting instance proxy...
  Run console at unix/:/tnt/test/var/001_box/proxy.control
  Start failed: builtin/box/console.lua:865: failed to create server unix/:/tnt/test/var/001_box/proxy.control: Address already in use

It happened on ASAN build, because server stop routine

  test-run/lib/preprocessor.py:TestState.server_stop() ->
    test-run/lib/tarantool_server.py:TarantoolServer.stop()

needs some delay to free the proxy.control socket created by

  test-run/lib/preprocessor.py:TestState.server_start() ->
    tarantoolctl:process_local()

To fix the issue added fiber.sleep() to give the needed delay.

Closes #5260
Part of #4360
avtikhon added a commit that referenced this issue Aug 27, 2020
Found that box/on_shutdown.test.lua test fails on asan build with:

  2020-08-26 09:04:06.750 [42629] main/102/on_shutdown [string "_ = box.ctl.on_shutdown(function() log.warn("..."]:1 W> on_shutdown 5
  Starting instance proxy...
  Run console at unix/:/tnt/test/var/001_box/proxy.control
  Start failed: builtin/box/console.lua:865: failed to create server unix/:/tnt/test/var/001_box/proxy.control: Address already in use

It happened on ASAN build, because server stop routine

  test-run/lib/preprocessor.py:TestState.server_stop() ->
    test-run/lib/tarantool_server.py:TarantoolServer.stop()

needs some delay to free the proxy.control socket created by

  test-run/lib/preprocessor.py:TestState.server_start() ->
    tarantoolctl:process_local()

To fix the issue added fiber.sleep() to give the needed delay.

Closes #5260
Part of #4360
avtikhon added a commit that referenced this issue Aug 31, 2020
Found that box/on_shutdown.test.lua test fails on asan build with:

  2020-08-26 09:04:06.750 [42629] main/102/on_shutdown [string "_ = box.ctl.on_shutdown(function() log.warn("..."]:1 W> on_shutdown 5
  Starting instance proxy...
  Run console at unix/:/tnt/test/var/001_box/proxy.control
  Start failed: builtin/box/console.lua:865: failed to create server unix/:/tnt/test/var/001_box/proxy.control: Address already in use

It happened on ASAN build, because server stop routine

  test-run/lib/preprocessor.py:TestState.server_stop() ->
    test-run/lib/tarantool_server.py:TarantoolServer.stop()

needs to free the proxy.control socket created by

  test-run/lib/preprocessor.py:TestState.server_start() ->
    tarantoolctl:process_local()

On some builds like ASAN server stop routine needs more time to free
the 'proxy.control' socket. So instead of time delay before server
restart need to use garbage collector to be sure that it will be freed.

Closes #5260
Part of #4360
avtikhon added a commit to tarantool/msgpuck that referenced this issue Sep 4, 2020
Found ASAN error:

[001] +    ok 206 - =================================================================
[001] +==6889==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x604000000031 at pc 0x0000005a72e7 bp 0x7ffe47c30c80 sp 0x7ffe47c30c78
[001] +WRITE of size 1 at 0x604000000031 thread T0
[001] +    #0 0x5a72e6 in mp_store_u8 /tarantool/src/lib/msgpuck/msgpuck.h:258:1
[001] +    #1 0x5a72e6 in mp_encode_uint /tarantool/src/lib/msgpuck/msgpuck.h:1768
[001] +    #2 0x4fa657 in test_mp_print /tarantool/src/lib/msgpuck/test/msgpuck.c:957:16
[001] +    #3 0x509024 in main /tarantool/src/lib/msgpuck/test/msgpuck.c:1331:2
[001] +    #4 0x7f3658fd909a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
[001] +    #5 0x41f339 in _start (/tnt/test/unit/msgpack.test+0x41f339)
[001] +
[001] +0x604000000031 is located 0 bytes to the right of 33-byte region [0x604000000010,0x604000000031)
[001] +allocated by thread T0 here:
[001] +    #0 0x4cace3 in malloc (/tnt/test/unit/msgpack.test+0x4cace3)
[001] +    #1 0x4fa5db in test_mp_print /tarantool/src/lib/msgpuck/test/msgpuck.c:945:18
[001] +    #2 0x509024 in main /tarantool/src/lib/msgpuck/test/msgpuck.c:1331:2
[001] +    #3 0x7f3658fd909a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
[001] +
[001] +SUMMARY: AddressSanitizer: heap-buffer-overflow /tarantool/src/lib/msgpuck/msgpuck.h:258:1 in mp_store_u8
[001] +Shadow bytes around the buggy address:
[001] +  0x0c087fff7fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +=>0x0c087fff8000: fa fa 00 00 00 00[01]fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8010: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8020: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8030: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +Shadow byte legend (one shadow byte represents 8 application bytes):
[001] +  Addressable:           00
[001] +  Partially addressable: 01 02 03 04 05 06 07
[001] +  Heap left redzone:       fa
[001] +  Freed heap region:       fd
[001] +  Stack left redzone:      f1
[001] +  Stack mid redzone:       f2
[001] +  Stack right redzone:     f3
[001] +  Stack after return:      f5
[001] +  Stack use after scope:   f8
[001] +  Global redzone:          f9
[001] +  Global init order:       f6
[001] +  Poisoned by user:        f7
[001] +  Container overflow:      fc
[001] +  Array cookie:            ac
[001] +  Intra object redzone:    bb
[001] +  ASan internal:           fe
[001] +  Left alloca redzone:     ca

Investigated the buffer size that was allocated was 33 bytes, but
it needed 34. The fix was to increase this buffer for another
mp_encode_array(1).

Part of tarantool/tarantool#4360
avtikhon added a commit that referenced this issue Sep 4, 2020
ASAN should the issue in msgpuck repository in file test/msgpuck.c
which was the cause of the fail in unit/msgpack test. The issue
was fixed in msgpuck repository and ASAN suppression was removed
for it. Also removed skip condition file, which blocked the test
when it failed.

Part of #4360
avtikhon added a commit to tarantool/msgpuck that referenced this issue Sep 4, 2020
Found ASAN error:

[001] +    ok 206 - =================================================================
[001] +==6889==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x604000000031 at pc 0x0000005a72e7 bp 0x7ffe47c30c80 sp 0x7ffe47c30c78
[001] +WRITE of size 1 at 0x604000000031 thread T0
[001] +    #0 0x5a72e6 in mp_store_u8 /tarantool/src/lib/msgpuck/msgpuck.h:258:1
[001] +    #1 0x5a72e6 in mp_encode_uint /tarantool/src/lib/msgpuck/msgpuck.h:1768
[001] +    #2 0x4fa657 in test_mp_print /tarantool/src/lib/msgpuck/test/msgpuck.c:957:16
[001] +    #3 0x509024 in main /tarantool/src/lib/msgpuck/test/msgpuck.c:1331:2
[001] +    #4 0x7f3658fd909a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
[001] +    #5 0x41f339 in _start (/tnt/test/unit/msgpack.test+0x41f339)
[001] +
[001] +0x604000000031 is located 0 bytes to the right of 33-byte region [0x604000000010,0x604000000031)
[001] +allocated by thread T0 here:
[001] +    #0 0x4cace3 in malloc (/tnt/test/unit/msgpack.test+0x4cace3)
[001] +    #1 0x4fa5db in test_mp_print /tarantool/src/lib/msgpuck/test/msgpuck.c:945:18
[001] +    #2 0x509024 in main /tarantool/src/lib/msgpuck/test/msgpuck.c:1331:2
[001] +    #3 0x7f3658fd909a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
[001] +
[001] +SUMMARY: AddressSanitizer: heap-buffer-overflow /tarantool/src/lib/msgpuck/msgpuck.h:258:1 in mp_store_u8
[001] +Shadow bytes around the buggy address:
[001] +  0x0c087fff7fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +=>0x0c087fff8000: fa fa 00 00 00 00[01]fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8010: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8020: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8030: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +Shadow byte legend (one shadow byte represents 8 application bytes):
[001] +  Addressable:           00
[001] +  Partially addressable: 01 02 03 04 05 06 07
[001] +  Heap left redzone:       fa
[001] +  Freed heap region:       fd
[001] +  Stack left redzone:      f1
[001] +  Stack mid redzone:       f2
[001] +  Stack right redzone:     f3
[001] +  Stack after return:      f5
[001] +  Stack use after scope:   f8
[001] +  Global redzone:          f9
[001] +  Global init order:       f6
[001] +  Poisoned by user:        f7
[001] +  Container overflow:      fc
[001] +  Array cookie:            ac
[001] +  Intra object redzone:    bb
[001] +  ASan internal:           fe
[001] +  Left alloca redzone:     ca

Investigated the buffer size that was allocated was 33 bytes, but
it needed 34. The fix was to increase this buffer for another
mp_encode_array(1).

Part of tarantool/tarantool#4360

Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
avtikhon added a commit that referenced this issue Sep 4, 2020
ASAN should the issue in msgpuck repository in file test/msgpuck.c
which was the cause of the fail in unit/msgpack test. The issue
was fixed in msgpuck repository and ASAN suppression was removed
for it. Also removed skip condition file, which blocked the test
when it failed.

Part of #4360
avtikhon added a commit to tarantool/msgpuck that referenced this issue Sep 4, 2020
Found ASAN error:

[001] +    ok 206 - =================================================================
[001] +==6889==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x604000000031 at pc 0x0000005a72e7 bp 0x7ffe47c30c80 sp 0x7ffe47c30c78
[001] +WRITE of size 1 at 0x604000000031 thread T0
[001] +    #0 0x5a72e6 in mp_store_u8 /tarantool/src/lib/msgpuck/msgpuck.h:258:1
[001] +    #1 0x5a72e6 in mp_encode_uint /tarantool/src/lib/msgpuck/msgpuck.h:1768
[001] +    #2 0x4fa657 in test_mp_print /tarantool/src/lib/msgpuck/test/msgpuck.c:957:16
[001] +    #3 0x509024 in main /tarantool/src/lib/msgpuck/test/msgpuck.c:1331:2
[001] +    #4 0x7f3658fd909a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
[001] +    #5 0x41f339 in _start (/tnt/test/unit/msgpack.test+0x41f339)
[001] +
[001] +0x604000000031 is located 0 bytes to the right of 33-byte region [0x604000000010,0x604000000031)
[001] +allocated by thread T0 here:
[001] +    #0 0x4cace3 in malloc (/tnt/test/unit/msgpack.test+0x4cace3)
[001] +    #1 0x4fa5db in test_mp_print /tarantool/src/lib/msgpuck/test/msgpuck.c:945:18
[001] +    #2 0x509024 in main /tarantool/src/lib/msgpuck/test/msgpuck.c:1331:2
[001] +    #3 0x7f3658fd909a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
[001] +
[001] +SUMMARY: AddressSanitizer: heap-buffer-overflow /tarantool/src/lib/msgpuck/msgpuck.h:258:1 in mp_store_u8
[001] +Shadow bytes around the buggy address:
[001] +  0x0c087fff7fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +=>0x0c087fff8000: fa fa 00 00 00 00[01]fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8010: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8020: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8030: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +Shadow byte legend (one shadow byte represents 8 application bytes):
[001] +  Addressable:           00
[001] +  Partially addressable: 01 02 03 04 05 06 07
[001] +  Heap left redzone:       fa
[001] +  Freed heap region:       fd
[001] +  Stack left redzone:      f1
[001] +  Stack mid redzone:       f2
[001] +  Stack right redzone:     f3
[001] +  Stack after return:      f5
[001] +  Stack use after scope:   f8
[001] +  Global redzone:          f9
[001] +  Global init order:       f6
[001] +  Poisoned by user:        f7
[001] +  Container overflow:      fc
[001] +  Array cookie:            ac
[001] +  Intra object redzone:    bb
[001] +  ASan internal:           fe
[001] +  Left alloca redzone:     ca

Investigated the buffer size that was allocated was 33 bytes, but
it needed 34. The fix was to increase this buffer for another
mp_encode_array(1).

Part of tarantool/tarantool#4360

Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
avtikhon added a commit that referenced this issue Sep 4, 2020
ASAN should the issue in msgpuck repository in file test/msgpuck.c
which was the cause of the fail in unit/msgpack test. The issue
was fixed in msgpuck repository and ASAN suppression was removed
for it. Also removed skip condition file, which blocked the test
when it failed.

Part of #4360
kyukhin pushed a commit to tarantool/msgpuck that referenced this issue Sep 8, 2020
Found ASAN error:

[001] +    ok 206 - =================================================================
[001] +==6889==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x604000000031 at pc 0x0000005a72e7 bp 0x7ffe47c30c80 sp 0x7ffe47c30c78
[001] +WRITE of size 1 at 0x604000000031 thread T0
[001] +    #0 0x5a72e6 in mp_store_u8 /tarantool/src/lib/msgpuck/msgpuck.h:258:1
[001] +    #1 0x5a72e6 in mp_encode_uint /tarantool/src/lib/msgpuck/msgpuck.h:1768
[001] +    #2 0x4fa657 in test_mp_print /tarantool/src/lib/msgpuck/test/msgpuck.c:957:16
[001] +    #3 0x509024 in main /tarantool/src/lib/msgpuck/test/msgpuck.c:1331:2
[001] +    #4 0x7f3658fd909a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
[001] +    #5 0x41f339 in _start (/tnt/test/unit/msgpack.test+0x41f339)
[001] +
[001] +0x604000000031 is located 0 bytes to the right of 33-byte region [0x604000000010,0x604000000031)
[001] +allocated by thread T0 here:
[001] +    #0 0x4cace3 in malloc (/tnt/test/unit/msgpack.test+0x4cace3)
[001] +    #1 0x4fa5db in test_mp_print /tarantool/src/lib/msgpuck/test/msgpuck.c:945:18
[001] +    #2 0x509024 in main /tarantool/src/lib/msgpuck/test/msgpuck.c:1331:2
[001] +    #3 0x7f3658fd909a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
[001] +
[001] +SUMMARY: AddressSanitizer: heap-buffer-overflow /tarantool/src/lib/msgpuck/msgpuck.h:258:1 in mp_store_u8
[001] +Shadow bytes around the buggy address:
[001] +  0x0c087fff7fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +=>0x0c087fff8000: fa fa 00 00 00 00[01]fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8010: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8020: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8030: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +Shadow byte legend (one shadow byte represents 8 application bytes):
[001] +  Addressable:           00
[001] +  Partially addressable: 01 02 03 04 05 06 07
[001] +  Heap left redzone:       fa
[001] +  Freed heap region:       fd
[001] +  Stack left redzone:      f1
[001] +  Stack mid redzone:       f2
[001] +  Stack right redzone:     f3
[001] +  Stack after return:      f5
[001] +  Stack use after scope:   f8
[001] +  Global redzone:          f9
[001] +  Global init order:       f6
[001] +  Poisoned by user:        f7
[001] +  Container overflow:      fc
[001] +  Array cookie:            ac
[001] +  Intra object redzone:    bb
[001] +  ASan internal:           fe
[001] +  Left alloca redzone:     ca

Investigated the buffer size that was allocated was 33 bytes, but
it needed 34. The fix was to increase this buffer for another
mp_encode_array(1).

Part of tarantool/tarantool#4360

Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
avtikhon added a commit that referenced this issue Sep 8, 2020
ASAN should the issue in msgpuck repository in file test/msgpuck.c
which was the cause of the fail in unit/msgpack test. The issue
was fixed in msgpuck repository and ASAN suppression was removed
for it. Also removed skip condition file, which blocked the test
when it failed.

Part of #4360
avtikhon added a commit that referenced this issue Sep 8, 2020
Removed lsan suppresions that were not reproduced.

Part of #4360
kyukhin pushed a commit that referenced this issue Sep 9, 2020
Removed lsan suppresions that were not reproduced.

Part of #4360

(cherry picked from commit 8d616ad)
kyukhin pushed a commit that referenced this issue Sep 9, 2020
Removed lsan suppresions that were not reproduced.

Part of #4360
kyukhin pushed a commit that referenced this issue Sep 9, 2020
Removed lsan suppresions that were not reproduced.

Part of #4360

(cherry picked from commit 8d616ad)
kyukhin pushed a commit that referenced this issue Sep 9, 2020
Removed lsan suppresions that were not reproduced.

Part of #4360

(cherry picked from commit 8d616ad)
avtikhon added a commit that referenced this issue Sep 9, 2020
ASAN should the issue in msgpuck repository in file test/msgpuck.c
which was the cause of the fail in unit/msgpack test. The issue
was fixed in msgpuck repository and ASAN suppression was removed
for it. Also removed skip condition file, which blocked the test
when it failed.

Part of #4360
kyukhin pushed a commit that referenced this issue Sep 9, 2020
ASAN should the issue in msgpuck repository in file test/msgpuck.c
which was the cause of the fail in unit/msgpack test. The issue
was fixed in msgpuck repository and ASAN suppression was removed
for it. Also removed skip condition file, which blocked the test
when it failed.

Part of #4360

(cherry picked from commit 35f99e6)
kyukhin pushed a commit that referenced this issue Sep 9, 2020
ASAN should the issue in msgpuck repository in file test/msgpuck.c
which was the cause of the fail in unit/msgpack test. The issue
was fixed in msgpuck repository and ASAN suppression was removed
for it. Also removed skip condition file, which blocked the test
when it failed.

Part of #4360

(cherry picked from commit 35f99e6)
kyukhin pushed a commit that referenced this issue Sep 9, 2020
ASAN should the issue in msgpuck repository in file test/msgpuck.c
which was the cause of the fail in unit/msgpack test. The issue
was fixed in msgpuck repository and ASAN suppression was removed
for it. Also removed skip condition file, which blocked the test
when it failed.

Part of #4360

(cherry picked from commit 35f99e6)
@avtikhon avtikhon moved this from ON REVIEW to DONE in Quality Assurance Sep 9, 2020
@avtikhon avtikhon moved this from DONE to DOING in Quality Assurance Sep 9, 2020
kyukhin pushed a commit that referenced this issue Sep 9, 2020
ASAN should the issue in msgpuck repository in file test/msgpuck.c
which was the cause of the fail in unit/msgpack test. The issue
was fixed in msgpuck repository and ASAN suppression was removed
for it. Also removed skip condition file, which blocked the test
when it failed.

Part of #4360
@avtikhon
Copy link
Contributor Author

avtikhon commented Sep 25, 2020

Issues split to:

Test ("# !test" means that test skipped by file ".skipcond") Source file Suppresion      
app/crypto.test.lua /usr/lib/x86_64-linux-gnu/libcrypto.so leak:CRYPTO_zalloc      
app/fiber_cond.test.lua /usr/lib/x86_64-linux-gnu/libcrypto.so leak:EVP_MD_CTX_copy_ex      
app-tap/http_client.test.lua src/tarantool leak:Curl_setstropt      
app-tap/http_client.test.lua src/tarantool leak:create_conn   third_party/curl/tests/valgrind.supp  
app-tap/http_client.test.lua src/tarantool leak:Curl_conncache_add_conn      
app-tap/http_client.test.lua src/tarantool leak:Curl_cache_addr      
app-tap/http_client.test.lua src/tarantool leak:Curl_hash_init      
app-tap/http_client.test.lua src/tarantool leak:Curl_hash_add      
app-tap/http_client.test.lua src/tarantool leak:Curl_he2ai      
app-tap/http_client.test.lua src/tarantool leak:Curl_open      
app-tap/http_client.test.lua src/tarantool leak:Curl_resolver_init      
app-tap/iconv.test.lua /usr/lib/x86_64-linux-gnu/gconv/UTF-16.so leak:gconv_init      
box*/ third_party/luajit leak:lj_BC_FUNCC      
box/access.test.lua src/box/error.cc leak:AccessDeniedError::AccessDeniedError 5299 avtikhon/asan-access-fix + reproducer [PATCH v1] asan: fix leak in AccessDeniedError
box/access_bin.test.lua src/box/error.cc leak:AccessDeniedError::AccessDeniedError   not reproduced  
box/access_misc.test.lua src/box/error.cc leak:AccessDeniedError::AccessDeniedError 5299 avtikhon/asan-access-fix + reproducer [PATCH v1] asan: fix leak in AccessDeniedError
box/bitset.test.lua src/lib/bitset/iterator.c leak:tt_bitset_iterator_init 5188 https://github.com/tarantool/tarantool/issues/5188 luajit ? asked the developer
box-py/args.test.py /lib/x86_64-linux-gnu/libc.so* leak:libc.so*      
box-tap/schema_mt.test.lua src/lib/core/coio_task.c leak:coio_on_start 5308 #5308 1 reproducer, fixed by Kirill
box-tap/schema_mt.test.lua src/lib/salad/mhash.h leak:mh_i32ptr_new 5308 #5330 1 reproducer
sql-tap/gh2250-trigger-chain-limit.test.lua src/lib/core/exception.cc leak:Exception::operator new 5320 #5320 1 reproducer
vinyl/errinj.test.lua src/lib/core/fiber.h leak:fiber_cxx_invoke 5323 #5323 1 reproducer + suite.ini:release_disabled
vinyl/recover.test.lua src/lib/core/fiber.c leak:cord_costart_thread_func 5324 #5324 1 reproducer
! test/box/on_shutdown.skipcond     5260 avtikhon/gh-5260-on-shutdown-test [PATCH v1] test: fix flaky box/on_shutdown.test.lua on asan
! unit/guard.skipcond       not needed only 1.10: needs all fixes from 4609 + 2 from 4641

@avtikhon avtikhon moved this from DOING to DONE in Quality Assurance Sep 25, 2020
@avtikhon avtikhon removed this from DONE in Quality Assurance Sep 25, 2020
VitaliyaIoffe added a commit to tarantool/test-run that referenced this issue May 17, 2021
Found ASAN error:

[001] +    ok 206 - =================================================================
[001] +==6889==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x604000000031 at pc 0x0000005a72e7 bp 0x7ffe47c30c80 sp 0x7ffe47c30c78
[001] +WRITE of size 1 at 0x604000000031 thread T0
[001] +    #0 0x5a72e6 in mp_store_u8 /tarantool/src/lib/msgpuck/msgpuck.h:258:1
[001] +    #1 0x5a72e6 in mp_encode_uint /tarantool/src/lib/msgpuck/msgpuck.h:1768
[001] +    #2 0x4fa657 in test_mp_print /tarantool/src/lib/msgpuck/test/msgpuck.c:957:16
[001] +    #3 0x509024 in main /tarantool/src/lib/msgpuck/test/msgpuck.c:1331:2
[001] +    #4 0x7f3658fd909a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
[001] +    #5 0x41f339 in _start (/tnt/test/unit/msgpack.test+0x41f339)
[001] +
[001] +0x604000000031 is located 0 bytes to the right of 33-byte region [0x604000000010,0x604000000031)
[001] +allocated by thread T0 here:
[001] +    #0 0x4cace3 in malloc (/tnt/test/unit/msgpack.test+0x4cace3)
[001] +    #1 0x4fa5db in test_mp_print /tarantool/src/lib/msgpuck/test/msgpuck.c:945:18
[001] +    #2 0x509024 in main /tarantool/src/lib/msgpuck/test/msgpuck.c:1331:2
[001] +    #3 0x7f3658fd909a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
[001] +
[001] +SUMMARY: AddressSanitizer: heap-buffer-overflow /tarantool/src/lib/msgpuck/msgpuck.h:258:1 in mp_store_u8
[001] +Shadow bytes around the buggy address:
[001] +  0x0c087fff7fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +  0x0c087fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[001] +=>0x0c087fff8000: fa fa 00 00 00 00[01]fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8010: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8020: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8030: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +  0x0c087fff8050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
[001] +Shadow byte legend (one shadow byte represents 8 application bytes):
[001] +  Addressable:           00
[001] +  Partially addressable: 01 02 03 04 05 06 07
[001] +  Heap left redzone:       fa
[001] +  Freed heap region:       fd
[001] +  Stack left redzone:      f1
[001] +  Stack mid redzone:       f2
[001] +  Stack right redzone:     f3
[001] +  Stack after return:      f5
[001] +  Stack use after scope:   f8
[001] +  Global redzone:          f9
[001] +  Global init order:       f6
[001] +  Poisoned by user:        f7
[001] +  Container overflow:      fc
[001] +  Array cookie:            ac
[001] +  Intra object redzone:    bb
[001] +  ASan internal:           fe
[001] +  Left alloca redzone:     ca

Investigated the buffer size that was allocated was 33 bytes, but
it needed 34. The fix was to increase this buffer for another
mp_encode_array(1).

Part of tarantool/tarantool#4360

Reviewed-by: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
test: obuf test refactoring

Added slab_arena_destroy for graceful resources release,
removed global seed value, removed unused value from enum.
Merge pull request #136 from tbeu/patch-1

Update README.rst
test: move unit/ to test/

This virtually reverts commit 436218defd4c284134f59975d4642405bdf2d918
('move unit tests to unit'), that was made in the scope of #106.

Despite the fact that testing of the connector uses `unittest`
framework, it is functional (and integration) testing by its nature:
most of the test cases verify that public API of the connector properly
works with tarantool.

In seems meaningful to locate such kind of test cases in the `test/`
directory, not `unit/`, disregarding of used framework.

Follows up #106.
Add timeout for starting tarantool server

Checking that tarantool server is started by finding pattern
'entering the event loop|will retry binding|hot standby mode' in the
xlog. If server is hanging it could be killed after test timeout. Was
added start-server-timeout. Now the pattern is searching until this
timeout. If there is no pattern functions wait_until_started returns
False (else True) and TarantoolServer.start() returns same.
Default value of start-server-timeout is 90 sec.

Fixes: #276
RELEASE-NOTES: synced

curl 7.76.0 release
Use rawset() when exporting functions to _G
test: fix directory detection in lua-Harness suite

A test <314-regex.t> uses `arg[0]:find'314'` to determine the name of
the directory where rx_* files are located. This leads to the test
failure, when lua-Harness suite runs in a directory containing "314" in
its name, because the found path doesn't contain the required files.

This patch fixes directory name detection.

Follows up tarantool/tarantool#5844

Reviewed-by: Igor Munkin <imun@tarantool.org>
Reviewed-by: Sergey Ostanevich <sergos@tarantool.org>
Signed-off-by: Igor Munkin <imun@tarantool.org>
Add the chdir option for make

Flag --chdir for make command (with help) has been added.
It's add possibility to specify a source directory of the rock when make.
Merge pull request #2435 from facebook/dev

v1.4.8 hotfix
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working qa Issues related to tests or testing subsystem
Projects
None yet
Development

No branches or pull requests

3 participants