Skip to content

Instantly share code, notes, and snippets.

@ivandasch
Created January 12, 2022 11:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ivandasch/00fc80c31cb48022eed81a72ff3c4fc6 to your computer and use it in GitHub Desktop.
Save ivandasch/00fc80c31cb48022eed81a72ff3c4fc6 to your computer and use it in GitHub Desktop.
ASAN failure NTS
=================================================================
==808582==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000f3f5b at pc 0x7fc98884ba6d bp 0x7ffe0686c280 sp 0x7ffe0686ba28
READ of size 15 at 0x6020000f3f5b thread T0
#0 0x7fc98884ba6c (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x67a6c)
#1 0x7fc987973438 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign(char const*) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x144438)
#2 0x7fc7f2e62b9a in ignite::utility::SqlStringToString[abi:cxx11](unsigned char const*, int) /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/src/utility.cpp:140
#3 0x7fc7f2c7aec4 in ignite::odbc::app::ApplicationDataBuffer::GetString[abi:cxx11](unsigned long) const /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/src/app/application_data_buffer.cpp:1028
#4 0x7fc7f2ca9128 in ignite::odbc::app::Parameter::Write(ignite::impl::binary::BinaryWriterImpl&, int, unsigned long) const /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/src/app/parameter.cpp:107
#5 0x7fc7f2cb4995 in ignite::odbc::app::ParameterSet::WriteRow(ignite::impl::binary::BinaryWriterImpl&, unsigned long) const /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/src/app/parameter_set.cpp:241
#6 0x7fc7f2cb4002 in ignite::odbc::app::ParameterSet::Write(ignite::impl::binary::BinaryWriterImpl&) const /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/src/app/parameter_set.cpp:199
#7 0x7fc7f2e1fff6 in ignite::odbc::QueryExecuteRequest::Write(ignite::impl::binary::BinaryWriterImpl&, ignite::odbc::ProtocolVersion const&) const /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/src/message.cpp:120
#8 0x7fc7f2d2a39a in void ignite::odbc::Parser::Encode<ignite::odbc::QueryExecuteRequest>(ignite::odbc::QueryExecuteRequest const&, std::vector<signed char, std::allocator<signed char> >&) (/home/ivandasch/Job/ignite-cpp/binaries/lib/libignite-odbc.so+0x52039a)
#9 0x7fc7f2d28dec in bool ignite::odbc::Connection::SyncMessage<ignite::odbc::QueryExecuteRequest, ignite::odbc::QueryExecuteResponse>(ignite::odbc::QueryExecuteRequest const&, ignite::odbc::QueryExecuteResponse&, int) /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/include/ignite/odbc/connection.h:218
#10 0x7fc7f2d9ac1a in ignite::odbc::query::DataQuery::MakeRequestExecute() /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/src/query/data_query.cpp:239
#11 0x7fc7f2d958ef in ignite::odbc::query::DataQuery::Execute() /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/src/query/data_query.cpp:58
#12 0x7fc7f2e426a1 in ignite::odbc::Statement::InternalExecuteSqlQuery() /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/src/statement.cpp:734
#13 0x7fc7f2e402a8 in ignite::odbc::Statement::ExecuteSqlQuery() /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/src/statement.cpp:680
#14 0x7fc7f2d5e75d in ignite::SQLExecute(void*) /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/src/odbc.cpp:400
#15 0x7fc7f2d76e40 in SQLExecute /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc/src/entry_points.cpp:118
#16 0x7fc987e9b700 in SQLExecute /bamboo/unixODBC-2.3.7/DriverManager/SQLExecute.c:290
#17 0x559e188ea8c7 in SqlTypesTestSuite::TestStingParamNullLen::test_method() /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc-test/src/sql_types_test.cpp:189
#18 0x559e188e81e9 in TestStingParamNullLen_invoker /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc-test/src/sql_types_test.cpp:156
#19 0x559e182d7a5e in boost::detail::function::void_function_invoker0<void (*)(), void>::invoke(boost::detail::function::function_buffer&) /usr/include/boost/function/function_template.hpp:117
#20 0x7fc9887633f1 (/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0+0x353f1)
#21 0x7fc988760c74 in boost::execution_monitor::catch_signals(boost::function<int ()> const&) (/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0+0x32c74)
#22 0x7fc988760cf7 in boost::execution_monitor::execute(boost::function<int ()> const&) (/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0+0x32cf7)
#23 0x7fc988760dcd in boost::execution_monitor::vexecute(boost::function<void ()> const&) (/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0+0x32dcd)
#24 0x7fc98878e134 in boost::unit_test::unit_test_monitor_t::execute_and_translate(boost::function<void ()> const&, unsigned long) (/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0+0x60134)
#25 0x7fc9887715a8 (/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0+0x435a8)
#26 0x7fc9887718ba (/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0+0x438ba)
#27 0x7fc9887718ba (/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0+0x438ba)
#28 0x7fc988768939 in boost::unit_test::framework::run(unsigned long, bool) (/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0+0x3a939)
#29 0x7fc98878cfea in boost::unit_test::unit_test_main(bool (*)(), int, char**) (/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0+0x5efea)
#30 0x559e182be640 in main /usr/include/boost/test/unit_test.hpp:63
#31 0x7fc986b8b0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
#32 0x559e182be54d in _start (/home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/cmake-build-debug/odbc-test/ignite-odbc-tests+0xdbb54d)
0x6020000f3f5b is located 0 bytes to the right of 11-byte region [0x6020000f3f50,0x6020000f3f5b)
allocated by thread T0 here:
#0 0x7fc9888f3947 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10f947)
#1 0x559e18550344 in __gnu_cxx::new_allocator<unsigned char>::allocate(unsigned long, void const*) /usr/include/c++/9/ext/new_allocator.h:114
#2 0x559e1854fc8f in __gnu_cxx::__alloc_traits<std::allocator<unsigned char>, unsigned char>::allocate(std::allocator<unsigned char>&, unsigned long) /usr/include/c++/9/ext/alloc_traits.h:133
#3 0x559e1854f44c in std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_allocate(unsigned long) /usr/include/c++/9/bits/stl_vector.h:343
#4 0x559e18766299 in void std::vector<unsigned char, std::allocator<unsigned char> >::_M_range_initialize<__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::forward_iterator_tag) /usr/include/c++/9/bits/stl_vector.h:1579
#5 0x559e18760639 in void std::vector<unsigned char, std::allocator<unsigned char> >::_M_initialize_dispatch<__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__false_type) /usr/include/c++/9/bits/stl_vector.h:1547
#6 0x559e18756a24 in std::vector<unsigned char, std::allocator<unsigned char> >::vector<__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<unsigned char> const&) /usr/include/c++/9/bits/stl_vector.h:665
#7 0x559e188ea10e in SqlTypesTestSuite::TestStingParamNullLen::test_method() /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc-test/src/sql_types_test.cpp:179
#8 0x559e188e81e9 in TestStingParamNullLen_invoker /home/ivandasch/Job/ignite-cpp/modules/platforms/cpp/odbc-test/src/sql_types_test.cpp:156
#9 0x559e182d7a5e in boost::detail::function::void_function_invoker0<void (*)(), void>::invoke(boost::detail::function::function_buffer&) /usr/include/boost/function/function_template.hpp:117
#10 0x7fc9887633f1 (/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0+0x353f1)
SUMMARY: AddressSanitizer: heap-buffer-overflow (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x67a6c)
Shadow bytes around the buggy address:
0x0c0480016790: fa fa 00 00 fa fa 00 00 fa fa 00 00 fa fa 00 00
0x0c04800167a0: fa fa 00 00 fa fa 00 00 fa fa 00 00 fa fa 00 00
0x0c04800167b0: fa fa 00 00 fa fa 00 00 fa fa 00 00 fa fa 00 00
0x0c04800167c0: fa fa 00 fa fa fa 00 fa fa fa 00 fa fa fa 00 00
0x0c04800167d0: fa fa 00 00 fa fa 00 00 fa fa 00 00 fa fa 00 00
=>0x0c04800167e0: fa fa 00 00 fa fa fa fa fa fa 00[03]fa fa 00 00
0x0c04800167f0: fa fa 00 00 fa fa 00 00 fa fa 00 00 fa fa 00 00
0x0c0480016800: fa fa 00 00 fa fa 00 00 fa fa 00 00 fa fa 00 00
0x0c0480016810: fa fa 00 00 fa fa 00 00 fa fa 00 00 fa fa 00 00
0x0c0480016820: fa fa 00 00 fa fa 00 00 fa fa 00 00 fa fa 00 00
0x0c0480016830: fa fa 00 00 fa fa 00 00 fa fa 00 00 fa fa 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
Shadow gap: cc
==808582==ABORTING
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment