Created
April 29, 2021 07:42
-
-
Save azat/9a9560bfddef36f7701023cafb7a778e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// clang++ -O2 -g3 -isystem /src/ch/clickhouse/contrib/boost -fsanitize-memory-track-origins -fsanitize=memory test-msan-3.cpp -o test-msan-3; MSAN_OPTIONS='abort_on_error=1 poison_in_dtor=1' ./test-msan-3 | |
/// clang++ -O2 -g3 -fsanitize-memory-track-origins -fsanitize=memory test-msan-3.cpp -o test-msan-3; MSAN_OPTIONS='abort_on_error=1 poison_in_dtor=1' ./test-msan-3 | |
#include <boost/container/small_vector.hpp> | |
#include <algorithm> | |
template <class T, std::size_t N, | |
typename Allocator = boost::container::new_allocator<T>> | |
using small_vector = boost::container::small_vector<T, N, Allocator>; | |
struct Foo | |
{ | |
std::string i; | |
bool operator<(const Foo &rhs) const { return i < rhs.i; } | |
}; | |
void foo() | |
{ | |
small_vector<Foo, 10> vector; | |
vector.reserve(3); | |
for (size_t i = 0; i < 3; ++i) | |
vector.push_back(Foo{}); | |
std::sort(vector.begin(), vector.end()); | |
} | |
int main() | |
{ | |
foo(); | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
==31659==WARNING: MemorySanitizer: use-of-uninitialized-value | |
#0 0x5555555f64be in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose() /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/bits/basic_string.h:231:6 | |
#1 0x5555555f64be in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/bits/basic_string.h:658:9 | |
#2 0x5555555f64be in Foo::~Foo() /tmp/test-msan-3.cpp:8:8 | |
#3 0x5555555f64be in void boost::container::allocator_traits<boost::container::small_vector_allocator<Foo, boost::container::new_allocator<void> > >::priv_destroy<Foo>(boost::move_detail::integral_constant<bool, false>, boost::container::small_vector_allocator<Foo, boost::container::new_allocator<void> >&, Foo*) /src/ch/clickhouse/contrib/boost/boost/container/allocator_traits.hpp:394:11 | |
#4 0x5555555f64be in void boost::container::allocator_traits<boost::container::small_vector_allocator<Foo, boost::container::new_allocator<void> > >::destroy<Foo>(boost::container::small_vector_allocator<Foo, boost::container::new_allocator<void> >&, Foo*) /src/ch/clickhouse/contrib/boost/boost/container/allocator_traits.hpp:322:7 | |
#5 0x5555555f64be in boost::container::dtl::disable_if_trivially_destructible<Foo*, void>::type boost::container::destroy_alloc_n<boost::container::small_vector_allocator<Foo, boost::container::new_allocator<void> >, Foo*, unsigned long>(boost::container::small_vector_allocator<Foo, boost::container::new_allocator<void> >&, Foo*, unsigned long) /src/ch/clickhouse/contrib/boost/boost/container/detail/copy_move_algo.hpp:972:7 | |
#6 0x5555555f64be in boost::container::vector<Foo, boost::container::small_vector_allocator<Foo, boost::container::new_allocator<void> >, void>::~vector() /src/ch/clickhouse/contrib/boost/boost/container/vector.hpp:1116:7 | |
#7 0x5555555f624c in boost::container::small_vector_base<Foo, boost::container::new_allocator<Foo> >::~small_vector_base() /src/ch/clickhouse/contrib/boost/boost/container/small_vector.hpp:413:4 | |
#8 0x5555555f5f77 in foo() /tmp/test-msan-3.cpp:21:1 | |
#9 0x5555555f6155 in main /tmp/test-msan-3.cpp:25:5 | |
#10 0x7ffff7a8cb24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24) | |
#11 0x5555555751fd in _start (/tmp/test-msan-3+0x211fd) | |
Memory was marked as uninitialized | |
#0 0x5555555d112b in __sanitizer_dtor_callback (/tmp/test-msan-3+0x7d12b) | |
#1 0x5555555f623a in boost::container::small_vector_base<Foo, boost::container::new_allocator<Foo> >::~small_vector_base() /src/ch/clickhouse/contrib/boost/boost/container/small_vector.hpp:413:4 | |
SUMMARY: MemorySanitizer: use-of-uninitialized-value /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../include/c++/10.2.0/bits/basic_string.h:231:6 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose() | |
Exiting | |
Aborted (core dumped) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment