build: Add address sanitizer (ASan) Travis job #14254

pull practicalswift wants to merge 1 commits into bitcoin:master from practicalswift:asan changing 2 files +11 −1
  1. practicalswift commented at 12:40 PM on September 18, 2018: contributor

    Add address sanitizer (ASan) Travis job.

  2. fanquake added the label Tests on Sep 18, 2018
  3. DrahtBot commented at 1:54 PM on September 18, 2018: member

    <!--e57a25ab6845829454e8d69fc972939a-->Reviewers, this pull request conflicts with the following ones:

    • #14252 (build: Run functional tests and benchmarks under the undefined behaviour sanitizer (UBSan) by practicalswift)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  4. build: Add address sanitizer (ASan) Travis job a2563be34e
  5. practicalswift force-pushed on Sep 18, 2018
  6. in .travis/test_04_install.sh:10 in a2563be34e
       6 | @@ -7,7 +7,8 @@
       7 |  export LC_ALL=C.UTF-8
       8 |  
       9 |  travis_retry docker pull "$DOCKER_NAME_TAG"
      10 | -env | grep -E '^(CCACHE_|WINEDEBUG|LC_ALL|BOOST_TEST_RANDOM|CONFIG_SHELL)' | tee /tmp/env
      11 | +export ASAN_OPTIONS="check_initialization_order=1"
    


    ken2812221 commented at 1:15 AM on September 19, 2018:

    I think this environment variable can be moved to .travis.yml

  7. practicalswift commented at 2:34 PM on September 19, 2018: contributor

    On Travis we're getting some really wild pointers :-)

    When running test_bitcoin:

    ==26852==ERROR: AddressSanitizer: attempting free on address which was not malloc()-ed: 0x55f1c0b64610 in thread T0
        [#0](/bitcoin-bitcoin/0/) 0x55f1bd627f58 in operator delete(void*) (/home/travis/build/practicalswift/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/src/test/test_bitcoin+0x3bbf58)
        [#1](/bitcoin-bitcoin/1/) 0x55f1bd46c746 in __gnu_cxx::new_allocator<char>::deallocate(char*, unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/ext/new_allocator.h:125:2
        [#2](/bitcoin-bitcoin/2/) 0x55f1bd46c746 in std::allocator_traits<std::allocator<char> >::deallocate(std::allocator<char>&, char*, unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/alloc_traits.h:462
        [#3](/bitcoin-bitcoin/3/) 0x55f1bd46c746 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_destroy(unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/basic_string.h:226
        [#4](/bitcoin-bitcoin/4/) 0x55f1bd46c746 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/basic_string.h:221
        [#5](/bitcoin-bitcoin/5/) 0x55f1bd46c746 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/basic_string.h:647
        [#6](/bitcoin-bitcoin/6/) 0x55f1bd46c746 in boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) /usr/include/boost/test/tree/test_unit.hpp:249
        [#7](/bitcoin-bitcoin/7/) 0x55f1bd46c746 in __cxx_global_var_init.86 /home/travis/build/practicalswift/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/src/test/arith_uint256_tests.cpp:223
        [#8](/bitcoin-bitcoin/8/) 0x55f1bd46c746 in _GLOBAL__sub_I_arith_uint256_tests.cpp /home/travis/build/practicalswift/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/src/test/arith_uint256_tests.cpp
        [#9](/bitcoin-bitcoin/9/) 0x55f1bef4328c in __libc_csu_init (/home/travis/build/practicalswift/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/src/test/test_bitcoin+0x1cd728c)
        [#10](/bitcoin-bitcoin/10/) 0x7fa1f83ecb27 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b27)
        [#11](/bitcoin-bitcoin/11/) 0x55f1bd52ed59 in _start (/home/travis/build/practicalswift/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/src/test/test_bitcoin+0x2c2d59)
    Address 0x55f1c0b64610 is a wild pointer.
    SUMMARY: AddressSanitizer: bad-free (/home/travis/build/practicalswift/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/src/test/test_bitcoin+0x3bbf58) in operator delete(void*)
    

    When running test_bitcoin-qt:

    ==26896==ERROR: AddressSanitizer: attempting free on address which was not malloc()-ed: 0x55e2a29c5ea0 in thread T0
        [#0](/bitcoin-bitcoin/0/) 0x55e29fdfd0a8 in operator delete(void*) (/home/travis/build/practicalswift/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/src/qt/test/test_bitcoin-qt+0x3040a8)
        [#1](/bitcoin-bitcoin/1/) 0x55e29fcb5298 in __gnu_cxx::new_allocator<char>::deallocate(char*, unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/ext/new_allocator.h:125:2
        [#2](/bitcoin-bitcoin/2/) 0x55e29fcb5298 in std::allocator_traits<std::allocator<char> >::deallocate(std::allocator<char>&, char*, unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/alloc_traits.h:462
        [#3](/bitcoin-bitcoin/3/) 0x55e29fcb5298 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_destroy(unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/basic_string.h:226
        [#4](/bitcoin-bitcoin/4/) 0x55e29fcb5298 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/basic_string.h:221
        [#5](/bitcoin-bitcoin/5/) 0x55e29fcb5298 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/basic_string.h:647
        [#6](/bitcoin-bitcoin/6/) 0x55e29fcb5298 in __cxx_global_var_init.98 /home/travis/build/practicalswift/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/src/rpc/blockchain.cpp:2197
        [#7](/bitcoin-bitcoin/7/) 0x55e29fcb5298 in _GLOBAL__sub_I_blockchain.cpp /home/travis/build/practicalswift/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/src/rpc/blockchain.cpp
        [#8](/bitcoin-bitcoin/8/) 0x55e2a0e202dc in __libc_csu_init (/home/travis/build/practicalswift/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/src/qt/test/test_bitcoin-qt+0x13272dc)
        [#9](/bitcoin-bitcoin/9/) 0x7f845ce17b27 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b27)
        [#10](/bitcoin-bitcoin/10/) 0x55e29fd03ea9 in _start (/home/travis/build/practicalswift/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/src/qt/test/test_bitcoin-qt+0x20aea9)
    Address 0x55e2a29c5ea0 is a wild pointer.
    SUMMARY: AddressSanitizer: bad-free (/home/travis/build/practicalswift/bitcoin/build/bitcoin-x86_64-unknown-linux-gnu/src/qt/test/test_bitcoin-qt+0x3040a8) in operator delete(void*)
    

    I can't reproduce locally. I'll investigate!

  8. DrahtBot commented at 7:01 AM on September 28, 2018: member

    <!--32850dd3fdea838b4049e64f46995ea2-->

    Coverage Change (pull 14254) Reference (master)
    Lines +0.0000 % 87.0361 %
    Functions +0.0772 % 84.1130 %
    Branches -0.0114 % 51.5451 %
  9. practicalswift closed this on Oct 19, 2018

  10. practicalswift deleted the branch on Apr 10, 2021
  11. DrahtBot locked this on Aug 16, 2022

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-16 15:15 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me