nano-node icon indicating copy to clipboard operation
nano-node copied to clipboard

Unit test network.peer_max_tcp_attempts failing with TSAN enabled every time

Open dsiganos opened this issue 2 years ago • 1 comments

ds@tux:~/nano/releases/V23.3$ make run_tsan_tests 
cd tsan && TSAN_OPTIONS="suppressions=../nano-node/tsan_suppressions" ./core_test  --gtest_filter=network.peer_max_tcp_attempts
Running main() from core_test_main.cc
Note: Google Test filter = network.peer_max_tcp_attempts
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from network
[ RUN      ] network.peer_max_tcp_attempts
Could not open lmdb environment: 12, Cannot allocate memory
Assertion (status4 == 0) failed
void nano::mdb_env::init(bool&, const boost::filesystem::path&, nano::mdb_env::options)
/home/ds/nano/releases/V23.3/nano-node/nano/node/lmdb/lmdb_env.cpp:65

 0# nano::generate_stacktrace[abi:cxx11]() at /home/ds/nano/releases/V23.3/nano-node/nano/lib/utility.cpp:129
 1# assert_internal(char const*, char const*, char const*, unsigned int, bool, std::basic_string_view<char, std::char_traits<char> >) at /home/ds/nano/releases/V23.3/nano-node/nano/lib/utility.cpp:175
 2# nano::mdb_env::init(bool&, boost::filesystem::path const&, nano::mdb_env::options) at /home/ds/nano/releases/V23.3/nano-node/nano/node/lmdb/lmdb_env.cpp:65
 3# nano::mdb_env::mdb_env(bool&, boost::filesystem::path const&, nano::mdb_env::options) at /home/ds/nano/releases/V23.3/nano-node/nano/node/lmdb/lmdb_env.cpp:7
 4# nano::mdb_store::mdb_store(nano::logger_mt&, boost::filesystem::path const&, nano::ledger_constants&, nano::txn_tracking_config const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, nano::lmdb_config const&, bool) at /home/ds/nano/releases/V23.3/nano-node/nano/node/lmdb/lmdb.cpp:74
 5# std::_MakeUniq<nano::mdb_store>::__single_object std::make_unique<nano::mdb_store, nano::logger_mt&, boost::filesystem::path const, nano::ledger_constants&, nano::txn_tracking_config const&, std::chrono::duration<long, std::ratio<1l, 1000l> >&, nano::lmdb_config const&, bool&>(nano::logger_mt&, boost::filesystem::path const&&, nano::ledger_constants&, nano::txn_tracking_config const&, std::chrono::duration<long, std::ratio<1l, 1000l> >&, nano::lmdb_config const&, bool&) at /usr/include/c++/9/bits/unique_ptr.h:857
 6# nano::make_store(nano::logger_mt&, boost::filesystem::path const&, nano::ledger_constants&, bool, bool, nano::rocksdb_config const&, nano::txn_tracking_config const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, nano::lmdb_config const&, bool) at /home/ds/nano/releases/V23.3/nano-node/nano/node/node.cpp:1854
 7# nano::node::node(boost::asio::io_context&, boost::filesystem::path const&, nano::node_config const&, nano::work_pool&, nano::node_flags, unsigned int) at /home/ds/nano/releases/V23.3/nano-node/nano/node/node.cpp:148
 8# nano::node::node(boost::asio::io_context&, unsigned short, boost::filesystem::path const&, nano::logging const&, nano::work_pool&, nano::node_flags, unsigned int) at /home/ds/nano/releases/V23.3/nano-node/nano/node/node.cpp:106
 9# void __gnu_cxx::new_allocator<nano::node>::construct<nano::node, boost::asio::io_context&, unsigned short, boost::filesystem::path, nano::logging&, nano::work_pool&, nano::node_flags&>(nano::node*, boost::asio::io_context&, unsigned short&&, boost::filesystem::path&&, nano::logging&, nano::work_pool&, nano::node_flags&) at /usr/include/c++/9/ext/new_allocator.h:146
10# void std::allocator_traits<std::allocator<nano::node> >::construct<nano::node, boost::asio::io_context&, unsigned short, boost::filesystem::path, nano::logging&, nano::work_pool&, nano::node_flags&>(std::allocator<nano::node>&, nano::node*, boost::asio::io_context&, unsigned short&&, boost::filesystem::path&&, nano::logging&, nano::work_pool&, nano::node_flags&) at /usr/include/c++/9/bits/alloc_traits.h:483
11# std::_Sp_counted_ptr_inplace<nano::node, std::allocator<nano::node>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<boost::asio::io_context&, unsigned short, boost::filesystem::path, nano::logging&, nano::work_pool&, nano::node_flags&>(std::allocator<nano::node>, boost::asio::io_context&, unsigned short&&, boost::filesystem::path&&, nano::logging&, nano::work_pool&, nano::node_flags&) at /usr/include/c++/9/bits/shared_ptr_base.h:548
12# std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<nano::node, std::allocator<nano::node>, boost::asio::io_context&, unsigned short, boost::filesystem::path, nano::logging&, nano::work_pool&, nano::node_flags&>(nano::node*&, std::_Sp_alloc_shared_tag<std::allocator<nano::node> >, boost::asio::io_context&, unsigned short&&, boost::filesystem::path&&, nano::logging&, nano::work_pool&, nano::node_flags&) at /usr/include/c++/9/bits/shared_ptr_base.h:679
13# std::__shared_ptr<nano::node, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<nano::node>, boost::asio::io_context&, unsigned short, boost::filesystem::path, nano::logging&, nano::work_pool&, nano::node_flags&>(std::_Sp_alloc_shared_tag<std::allocator<nano::node> >, boost::asio::io_context&, unsigned short&&, boost::filesystem::path&&, nano::logging&, nano::work_pool&, nano::node_flags&) at /usr/include/c++/9/bits/shared_ptr_base.h:1344
14# std::shared_ptr<nano::node>::shared_ptr<std::allocator<nano::node>, boost::asio::io_context&, unsigned short, boost::filesystem::path, nano::logging&, nano::work_pool&, nano::node_flags&>(std::_Sp_alloc_shared_tag<std::allocator<nano::node> >, boost::asio::io_context&, unsigned short&&, boost::filesystem::path&&, nano::logging&, nano::work_pool&, nano::node_flags&) at /usr/include/c++/9/bits/shared_ptr.h:359
15# std::shared_ptr<nano::node> std::allocate_shared<nano::node, std::allocator<nano::node>, boost::asio::io_context&, unsigned short, boost::filesystem::path, nano::logging&, nano::work_pool&, nano::node_flags&>(std::allocator<nano::node> const&, boost::asio::io_context&, unsigned short&&, boost::filesystem::path&&, nano::logging&, nano::work_pool&, nano::node_flags&) at /usr/include/c++/9/bits/shared_ptr.h:702
16# std::shared_ptr<nano::node> std::make_shared<nano::node, boost::asio::io_context&, unsigned short, boost::filesystem::path, nano::logging&, nano::work_pool&, nano::node_flags&>(boost::asio::io_context&, unsigned short&&, boost::filesystem::path&&, nano::logging&, nano::work_pool&, nano::node_flags&) at /usr/include/c++/9/bits/shared_ptr.h:718
17# network_peer_max_tcp_attempts_Test::TestBody() at /home/ds/nano/releases/V23.3/nano-node/nano/core_test/network.cpp:905
18# void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) at /home/ds/nano/releases/V23.3/nano-node/gtest/googletest/src/gtest.cc:2607
19# void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) at /home/ds/nano/releases/V23.3/nano-node/gtest/googletest/src/gtest.cc:2643
20# testing::Test::Run() at /home/ds/nano/releases/V23.3/nano-node/gtest/googletest/src/gtest.cc:2689
21# testing::TestInfo::Run() at /home/ds/nano/releases/V23.3/nano-node/gtest/googletest/src/gtest.cc:2864
22# testing::TestSuite::Run() at /home/ds/nano/releases/V23.3/nano-node/gtest/googletest/src/gtest.cc:3016
23# testing::internal::UnitTestImpl::RunAllTests() at /home/ds/nano/releases/V23.3/nano-node/gtest/googletest/src/gtest.cc:5856
24# bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) at /home/ds/nano/releases/V23.3/nano-node/gtest/googletest/src/gtest.cc:2607
25# bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) at /home/ds/nano/releases/V23.3/nano-node/gtest/googletest/src/gtest.cc:2643
26# testing::UnitTest::Run() at /home/ds/nano/releases/V23.3/nano-node/gtest/googletest/src/gtest.cc:5441
27# RUN_ALL_TESTS() in ./core_test
28# main at /home/ds/nano/releases/V23.3/nano-node/nano/core_test/core_test_main.cc:24
29# __libc_start_main at ../csu/libc-start.c:342
30# _start in ./core_test

Aborted
make: *** [Makefile:124: run_tsan_tests] Error 134

dsiganos avatar Jun 17 '22 14:06 dsiganos

Setting map_size in nano::mdb_env::init to 16 * 1024 * 1024, solves the problem.

dsiganos avatar Jun 17 '22 16:06 dsiganos