Merge pull request #4341 from PastaPastaPasta/backports-0.18-pr14

Backports 0.18 pr14
This commit is contained in:
UdjinM6 2021-08-18 22:05:46 +03:00 committed by GitHub
commit b981c0df82
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 96 additions and 41 deletions

View File

@ -252,33 +252,25 @@ after_success:
DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1"
GOAL="install" GOAL="install"
BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports --enable-debug CXXFLAGS=\"-g0 -O2\"" BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports --enable-debug CXXFLAGS=\"-g0 -O2\""
# x86_64 Linux (xenial, no depends, only system libs) # x86_64 Linux (xenial, no depends, only system libs, sanitizers: thread (TSAN))
- stage: test - stage: test
env: >- env: >-
HOST=x86_64-unknown-linux-gnu HOST=x86_64-unknown-linux-gnu
DOCKER_NAME_TAG=ubuntu:16.04 DOCKER_NAME_TAG=ubuntu:16.04
PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools libssl-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev" PACKAGES="clang llvm python3-zmq qtbase5-dev qttools5-dev-tools libssl-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev"
NO_DEPENDS=1 NO_DEPENDS=1
RUN_FUNCTIONAL_TESTS=false # Disabled for now. TODO identify suppressions or exclude specific tests
GOAL="install" GOAL="install"
BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER" BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER --with-sanitizers=thread --disable-hardening --disable-asm CC=clang CXX=clang++"
# x86_64 Linux (no depends, only system libs) # x86_64 Linux (no depends, only system libs, sanitizers: undefined (UBSAN) + integer)
- stage: test - stage: test
env: >- env: >-
HOST=x86_64-unknown-linux-gnu HOST=x86_64-unknown-linux-gnu
PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools libssl1.0-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev" PACKAGES="clang llvm python3-zmq qtbase5-dev qttools5-dev-tools libssl1.0-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev"
NO_DEPENDS=1
GOAL="install"
BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER"
# x86_64 Linux (sanitizers)
- stage: test
env: >-
HOST=x86_64-unknown-linux-gnu
PACKAGES="clang python3-zmq qtbase5-dev qttools5-dev-tools libssl1.0-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev"
NO_DEPENDS=1 NO_DEPENDS=1
RUN_BENCH=true RUN_BENCH=true
RUN_FUNCTIONAL_TESTS=false # Disabled for now, can be combined with the other x86_64 linux NO_DEPENDS job when functional tests pass the sanitizers
GOAL="install" GOAL="install"
BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER --with-sanitizers=undefined CC=clang CXX=clang++" BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER --with-sanitizers=integer,undefined CC=clang CXX=clang++"
# x86_64 Linux, No wallet # x86_64 Linux, No wallet
- stage: test - stage: test
env: >- env: >-

View File

@ -7,6 +7,8 @@
export LC_ALL=C.UTF-8 export LC_ALL=C.UTF-8
PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g") PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
# Add llvm-symbolizer directory to PATH. Needed to get symbolized stack traces from the sanitizers.
PATH=$PATH:/usr/lib/llvm-6.0/bin/
export PATH export PATH
BEGIN_FOLD () { BEGIN_FOLD () {

View File

@ -7,7 +7,9 @@
export LC_ALL=C.UTF-8 export LC_ALL=C.UTF-8
travis_retry docker pull "$DOCKER_NAME_TAG" travis_retry docker pull "$DOCKER_NAME_TAG"
env | grep -E '^(CCACHE_|WINEDEBUG|LC_ALL|BOOST_TEST_RANDOM|CONFIG_SHELL)' | tee /tmp/env export TSAN_OPTIONS="suppressions=${TRAVIS_BUILD_DIR}/test/sanitizer_suppressions/tsan"
export UBSAN_OPTIONS="suppressions=${TRAVIS_BUILD_DIR}/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1"
env | grep -E '^(CCACHE_|WINEDEBUG|LC_ALL|BOOST_TEST_RANDOM|CONFIG_SHELL|(TSAN|UBSAN)_OPTIONS)' | tee /tmp/env
if [[ $HOST = *-mingw32 ]]; then if [[ $HOST = *-mingw32 ]]; then
DOCKER_ADMIN="--cap-add SYS_ADMIN" DOCKER_ADMIN="--cap-add SYS_ADMIN"
elif [[ $BITCOIN_CONFIG = *--with-sanitizers=*address* ]]; then # If ran with (ASan + LSan), Docker needs access to ptrace (https://github.com/google/sanitizers/issues/764) elif [[ $BITCOIN_CONFIG = *--with-sanitizers=*address* ]]; then # If ran with (ASan + LSan), Docker needs access to ptrace (https://github.com/google/sanitizers/issues/764)

View File

@ -75,7 +75,7 @@ public:
void EvictExtraOutboundPeers(int64_t time_in_seconds) EXCLUSIVE_LOCKS_REQUIRED(cs_main); void EvictExtraOutboundPeers(int64_t time_in_seconds) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
private: private:
int64_t m_stale_tip_check_time; //! Next time to check for stale tip int64_t m_stale_tip_check_time; //!< Next time to check for stale tip
/** Enable BIP61 (sending reject messages) */ /** Enable BIP61 (sending reject messages) */
const bool m_enable_bip61; const bool m_enable_bip61;

View File

@ -197,10 +197,10 @@ enum SOCKSVersion: uint8_t {
/** Values defined for METHOD in RFC1928 */ /** Values defined for METHOD in RFC1928 */
enum SOCKS5Method: uint8_t { enum SOCKS5Method: uint8_t {
NOAUTH = 0x00, //! No authentication required NOAUTH = 0x00, //!< No authentication required
GSSAPI = 0x01, //! GSSAPI GSSAPI = 0x01, //!< GSSAPI
USER_PASS = 0x02, //! Username/password USER_PASS = 0x02, //!< Username/password
NO_ACCEPTABLE = 0xff, //! No acceptable methods NO_ACCEPTABLE = 0xff, //!< No acceptable methods
}; };
/** Values defined for CMD in RFC1928 */ /** Values defined for CMD in RFC1928 */
@ -212,15 +212,15 @@ enum SOCKS5Command: uint8_t {
/** Values defined for REP in RFC1928 */ /** Values defined for REP in RFC1928 */
enum SOCKS5Reply: uint8_t { enum SOCKS5Reply: uint8_t {
SUCCEEDED = 0x00, //! Succeeded SUCCEEDED = 0x00, //!< Succeeded
GENFAILURE = 0x01, //! General failure GENFAILURE = 0x01, //!< General failure
NOTALLOWED = 0x02, //! Connection not allowed by ruleset NOTALLOWED = 0x02, //!< Connection not allowed by ruleset
NETUNREACHABLE = 0x03, //! Network unreachable NETUNREACHABLE = 0x03, //!< Network unreachable
HOSTUNREACHABLE = 0x04, //! Network unreachable HOSTUNREACHABLE = 0x04, //!< Network unreachable
CONNREFUSED = 0x05, //! Connection refused CONNREFUSED = 0x05, //!< Connection refused
TTLEXPIRED = 0x06, //! TTL expired TTLEXPIRED = 0x06, //!< TTL expired
CMDUNSUPPORTED = 0x07, //! Command not supported CMDUNSUPPORTED = 0x07, //!< Command not supported
ATYPEUNSUPPORTED = 0x08, //! Address type not supported ATYPEUNSUPPORTED = 0x08, //!< Address type not supported
}; };
/** Values defined for ATYPE in RFC1928 */ /** Values defined for ATYPE in RFC1928 */

View File

@ -50,9 +50,9 @@ std::string StringForFeeReason(FeeReason reason);
/* Used to determine type of fee estimation requested */ /* Used to determine type of fee estimation requested */
enum class FeeEstimateMode { enum class FeeEstimateMode {
UNSET, //! Use default settings based on other criteria UNSET, //!< Use default settings based on other criteria
ECONOMICAL, //! Force estimateSmartFee to use non-conservative estimates ECONOMICAL, //!< Force estimateSmartFee to use non-conservative estimates
CONSERVATIVE, //! Force estimateSmartFee to use conservative estimates CONSERVATIVE, //!< Force estimateSmartFee to use conservative estimates
}; };
bool FeeModeFromString(const std::string& mode_string, FeeEstimateMode& fee_estimate_mode); bool FeeModeFromString(const std::string& mode_string, FeeEstimateMode& fee_estimate_mode);

View File

@ -5,7 +5,6 @@
#include <key_io.h> #include <key_io.h>
#include <keystore.h> #include <keystore.h>
#include <pubkey.h> #include <pubkey.h>
#include <rpc/protocol.h>
#include <rpc/util.h> #include <rpc/util.h>
#include <tinyformat.h> #include <tinyformat.h>
#include <util/strencodings.h> #include <util/strencodings.h>

View File

@ -7,10 +7,10 @@
#include <node/transaction.h> #include <node/transaction.h>
#include <pubkey.h> #include <pubkey.h>
#include <rpc/protocol.h>
#include <script/standard.h> #include <script/standard.h>
#include <univalue.h> #include <univalue.h>
#include <util/strencodings.h> #include <util/strencodings.h>
#include <rpc/protocol.h>
#include <string> #include <string>
#include <vector> #include <vector>

View File

@ -352,12 +352,12 @@ struct TxMempoolInfo
* this is passed to the notification signal. * this is passed to the notification signal.
*/ */
enum class MemPoolRemovalReason { enum class MemPoolRemovalReason {
UNKNOWN = 0, //! Manually removed or unknown reason UNKNOWN = 0, //!< Manually removed or unknown reason
EXPIRY, //! Expired from mempool EXPIRY, //!< Expired from mempool
SIZELIMIT, //! Removed in size limiting SIZELIMIT, //!< Removed in size limiting
REORG, //! Removed for reorganization REORG, //!< Removed for reorganization
BLOCK, //! Removed for block BLOCK, //!< Removed for block
CONFLICT, //! Removed for conflict with in-block transaction CONFLICT, //!< Removed for conflict with in-block transaction
}; };
class SaltedTxidHasher class SaltedTxidHasher

View File

@ -0,0 +1,24 @@
# ThreadSanitizer suppressions
# ============================
# fChecked is theoretically racy, practically only in unit tests
race:CheckBlock
# WalletBatch (unidentified deadlock)
deadlock:WalletBatch
# Intentional deadlock in tests
deadlock:TestPotentialDeadLockDetected
# Wildcard for all gui tests, should be replaced with non-wildcard suppressions
race:src/qt/test/*
deadlock:src/qt/test/*
# WIP: Unidentified suppressions to run the functional tests
#race:zmqpublishnotifier.cpp
#
#deadlock:CreateWalletFromFile
#deadlock:importprivkey
#deadlock:walletdb.h
#deadlock:walletdb.cpp
#deadlock:wallet/db.cpp

View File

@ -0,0 +1,36 @@
alignment:move.h
alignment:prevector.h
bool:wallet/wallet.cpp
float-divide-by-zero:policy/fees.cpp
float-divide-by-zero:validation.cpp
float-divide-by-zero:wallet/wallet.cpp
nonnull-attribute:support/cleanse.cpp
unsigned-integer-overflow:arith_uint256.h
unsigned-integer-overflow:basic_string.h
unsigned-integer-overflow:bench/bench.h
unsigned-integer-overflow:bitcoin-tx.cpp
unsigned-integer-overflow:bloom.cpp
unsigned-integer-overflow:chain.cpp
unsigned-integer-overflow:chain.h
unsigned-integer-overflow:coded_stream.h
unsigned-integer-overflow:core_write.cpp
unsigned-integer-overflow:crypto/chacha20.cpp
unsigned-integer-overflow:crypto/ctaes/ctaes.c
unsigned-integer-overflow:crypto/ripemd160.cpp
unsigned-integer-overflow:crypto/sha1.cpp
unsigned-integer-overflow:crypto/sha256.cpp
unsigned-integer-overflow:crypto/sha512.cpp
unsigned-integer-overflow:hash.cpp
unsigned-integer-overflow:leveldb/db/log_reader.cc
unsigned-integer-overflow:leveldb/util/bloom.cc
unsigned-integer-overflow:leveldb/util/crc32c.h
unsigned-integer-overflow:leveldb/util/hash.cc
unsigned-integer-overflow:policy/fees.cpp
unsigned-integer-overflow:prevector.h
unsigned-integer-overflow:script/interpreter.cpp
unsigned-integer-overflow:stl_bvector.h
unsigned-integer-overflow:streams.h
unsigned-integer-overflow:txmempool.cpp
unsigned-integer-overflow:util/strencodings.cpp
unsigned-integer-overflow:validation.cpp
vptr:fs.cpp